ios - UIDocumentPickerViewController 在使用 directoryURL 时缺少取消按钮以关闭
问题描述
我们提供了一个UIDocumentPickerViewController
带有 URL 的 URL URLForUbiquityContainerIdentifier
,无论出于何种原因,它都没有为我们的所有用户显示取消按钮。有时,它完全丢失,用户无法关闭,除非转到“最近”选项卡,它将强制显示取消按钮。
以下是我们展示模态的方式:
- (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 中仍未修复。任何人都可以想到解决此问题的方法,因为我们很想使用此功能!
解决方案
推荐阅读
- webpack - Webpack devServer v. 4.xx 实时重新加载不起作用
- node.js - SvelteKit 和适配器节点 -> 生产
- docker - Gitlab DIND Runner TLS失败
- windows - 为什么 go install 会在 bin\windows_386 中创建一个可执行文件?
- node.js - 即使在返回并使用异步等待之后也发送了两次响应
- html - Google 图标不会对齐或浮动中心
- firebase - 如何从 Firebase 获取数据快照并将其放入同一项目的单独 dart 文件中?
- linux - Azure Linux Web 应用服务 - System.IO.IOException:只读文件错误
- mongodb - IntellijIdea Mongo 连接太慢且缺乏功能
- python - 我想使用 python 将数组中的所有数字更改为 ABCD 评分系统