呈现UIDocumentPickerViewController并将其关闭可保持呈现的视图控制器处于冻结状态

问题描述

我正在使用launchPDFBrowserOnKonyForm类中的方法Generic shared来呈现视图控制器,并且代码如下:

#import "PDFGenericClass.h"
#import "PDFBrowserViewController.h"
@implementation PDFGenericClass
+ (id)sharedManager {
  static PDFGenericClass *sharedMyManager = nil;
    sharedMyManager = [[self alloc] init];
  return sharedMyManager;
}
- (void)launchPDFBrowserOnKonyForm{
    PDFBrowserViewController *pdfBrowser = [[PDFBrowserViewController alloc]init];
    UIWindow *window = [[[UIApplication sharedApplication] windows] firstObject];
    UIViewController *vc = [window rootViewController];
    [vc presentViewController:pdfBrowser animated:YES completion:nil];
}

在我的PDFBrowserViewController中,我展示了一个UIDocumentPickerViewControllerinside viewDidLoad,下面给出了代码:

#import "PDFBrowserViewController.h"
#import <MobileCoreServices/MobileCoreServices.h>
#import "PDFPreviewControllerViewController.h"
@interface PDFBrowserViewController ()<UIDocumentPickerDelegate>
@end
@implementation PDFBrowserViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  dispatch_async(dispatch_get_main_queue(),^{
    // Do any additional setup after loading the view.
    NSArray *types = @[(NSString*)kUTTypePDF];
    //Create a object of document picker view and set the mode to Import
    UIDocumentPickerViewController *docPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:types inMode:UIDocumentPickerModeImport];
    //Set the delegate
    docPicker.delegate = self;
    //present the document picker
    [self presentViewController:docPicker animated:YES completion:nil];
  });
}

从另一个名为“ ViewControllerB”的视图控制器中的“调用FFI”按钮的按钮动作调用泛型类中的launchPDFBrowserOnKonyForm

Invoke FFI button

显示的UIDocumentPickerController。

UIDocumentpickercontroller

但是当我关闭UIDocumentpickerview控制器时,“ Invoke FFI”按钮所在的屏幕仍然处于奇怪的状态,如下所示:如何解决这个奇怪的问题?

enter image description here

解决方法

问题是您在 PDFBrowserViewController 中打开 UIDocumentPickerViewController ,因此当您关闭 UIDocumentPickerViewController 但未关闭 PDFBrowserViewController 时。

解决方案1:,无需使用 PDFBrowserViewController ,直接在顶部viewcontroller中打开 UIDocumentPickerViewController

解决方案2:在关闭 UIDocumentPickerViewController 后在Delegate方法中关闭了父控制器。

UIWindow *window = [[[UIApplication sharedApplication] windows] firstObject];
UIViewController *vc = [window rootViewController];
[vc dismissViewControllerAnimated:true completion:nil];

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...