我在iOS 8上使用UIDocumentPickerViewController
来允许用户在iCloud Drive中打开文档。
我将UIDocumentPickerModeOpen
与我应用文档的自定义UTI一起使用:
UIDocumentPickerViewController *pickerViewController = [[UIDocumentPickerViewController alloc]
initWithDocumentTypes:@[[MySampleDocument documentUTI]]
inMode:UIDocumentPickerModeOpen];
pickerViewController.delegate = self;
[self presentViewController:pickerViewController animated:YES completion:^{
}];
一开始工作正常。我的应用程序的文档显示,用户可以选择一个文档,并在应用程序中打开它。
但是,如果我再次使用文档选择器,我刚刚选择的同一文档现在变灰,无法再次选取。
为什么?
即使退出应用后,文档仍然显示为灰色。我甚至删除了应用程序并再次安装它。该文件仍然是灰色的。
我正在使用UIDocument,因此启动和停止安全范围访问需要处理。
答案 0 :(得分:1)
我终于弄明白了。我的Info.plist中的文档UTI必须符合public.data
。一旦我添加了这个,条目就不再灰显了。
另一个积极的副作用是NSMetadtaQuery结果的kMDItemContentType
现在最终显示正确的UTI,而不再是dyn.abc1234...
。
以下是更新后的工作类型定义:
<key>UTTypeConformsTo</key>
<array>
<string>public.composite-content</string>
<string>public.data</string> ← This part was missing before.
</array>