问题描述
我们正在向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 (将#修改为@)