呈现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];