UIDocumentPickerViewController缺少使用directoryURL时要取消的取消按钮

问题描述

我们正在向UIDocumentPickerViewController展示URLForUbiquityContainerIdentifier的URL,并且由于某种原因,它不会为所有用户显示“取消”按钮。有时,它完全丢失了,用户必须先进入“最近”选项卡,然后该选项卡才会强制显示取消按钮。

这是我们呈现模式的方式:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    dispatch_after(dispatch_time(disPATCH_TIME_Now,(int64_t)(0.5 * NSEC_PER_SEC)),dispatch_get_main_queue(),^{
        
        [self rootDirectoryForICloudWithFolderName:@"Test" createFolder:YES completion:^(NSURL *ubiquityURL) {
            
            self.picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[(Nsstring *)kUTTypeJPEG] inMode:UIDocumentPickerModeOpen];
            self.picker.directoryURL = ubiquityURL;
            self.picker.delegate = self;
            
            [self presentViewController:self.picker animated:YES completion:nil];
            
        }];
        
    });
    
}

- (void)rootDirectoryForICloudWithFolderName:(Nsstring *)folderName createFolder:(BOOL)createFolder completion:(void (^)(NSURL *))completionHandler {
    
    dispatch_async(dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAULT,0),^{
        
        NSURL *rootDirectory = [[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] URLByAppendingPathComponent:[Nsstring stringWithFormat:@"Documents/%@",folderName]];
        if (rootDirectory) {
            if (![[NSFileManager defaultManager] fileExistsAtPath:rootDirectory.path isDirectory:nil] && createFolder) {
                [[NSFileManager defaultManager] createDirectoryAtURL:rootDirectory withIntermediateDirectories:YES attributes:nil error:nil];
            }
        }
        
        dispatch_async(dispatch_get_main_queue(),^{
            completionHandler(rootDirectory);
        });
    });
}

我正在将directoryURL设置为我们应用程序的iCloud文档文件夹的普遍存在的URL。奇怪的是,这仅在具有唯一捆绑包标识符的新安装中发生。如果我切换选项卡,以使取消按钮出现,则在下次启动时它将正常工作。但是,更改包标识符会导致该错误再次发生。

Apple曾说过这是一个错误,但在iOS 14 beta 5中仍未修复。任何人都可以想到此问题的解决方法,因为我们很乐意使用此功能

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)