【问题标题】:iCloud Document Picker with Custom UTI带有自定义 UTI 的 iCloud 文档选择器
【发布时间】:2015-07-16 17:35:49
【问题描述】:

UIDocumentPickerViewController initWithDocumentTypes 是否需要公共 UTI 才能运行?

我正在尝试利用 iCloud 文档来允许用户从 iCloud Drive 导入专有文件类型。测试适用于公共 UTI,例如:@"public.text"

如果我没有在 initWithDocumentTypes 数组中包含公共 UTI,我会看到一个屏幕显示:

没有文件。 iCloud Drive 中的文档不可用,因为 iCloud 文档和数据设置已禁用。

我导入的 UTI 在 Target > Info 中定义为“com.domain.file”。我必须相信这是正确设置的,因为我可以在另一个应用程序(例如 Dropbox)中选择我的一个专有文件,并且我的应用程序会显示在 Open In... 选项中。

在我的导入操作中,我尝试了所有我能想到的变体来让我的自定义 UTI 显示选择器。

- (IBAction)importDocumentPickerTapped:(id)sender
{
    UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc initWithDocumentTypes:@[@"com.domain.file", @"com.domain.app.file", @"iCloud.com.domain.file", @"iCloud.com.domain.app.file" ] inMode:UIDocumentPickerModeImport];
    documentPicker.delegate = self;
    documentPicker.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentViewController:documentPicker animated:YES completion:nil];
}

如果我将 @"public.text" 添加到 initWithDocumentTypes 数组,则 iCloud Drive Locations 选择器屏幕将按预期显示。我可以选择 .txt 和 .rtf 文件,但我的自定义文件类型显示为灰色且不可选择。

注意:

  1. 我没有创建文档提供程序扩展,因为我认为这不是必需的,而且我的文件格式不常见。
  2. 当我对UIDocumentPickerViewController 执行任何操作时,我会看到以下警告,即使它是取消并且即使对文件的操作(即保存 .txt)有效。我花了很多时间试图追查这个警告的来源,但无济于事。

com.apple.UIKit.fileprovider.default 插件失效

【问题讨论】:

  • 完全有同样的问题。你找到解决办法了吗?

标签: ios ios8 icloud uti icloud-drive


【解决方案1】:

我遇到了这个问题,并通过让我的自定义导出 UTI 符合“public.data”UTI 来解决它。

您可以通过选择您的目标,然后选择信息选项卡来进行设置。滚动到导出的 UTI 部分并展开它。在您的自定义 UTI 下有一个框来声明它符合。

有关系统定义的 UTI 列表,请参见此处: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

【讨论】:

  • 对我也不起作用。 Apple 将 API 的绝对大杂烩拼凑在一起。完全碰碰运气,没有适当的警告。 FilePicker 中的所有内容都显示为灰色。我已尝试调整自定义 UTI 中的所有可能设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 2019-05-01
  • 2018-02-12
  • 1970-01-01
相关资源
最近更新 更多