在我的 iOS 应用程序中,我正在打开一个UIDocumentPickerViewController
以导入 .sty 文件(MIDI 样式)。为此,我在导入的 UTI 和文档类型中声明了一个自定义 UTI。
问题是在我客户的 iPad Air 2 上,这些文件在对话框中显示为灰色,因此他无法导入它们。在我的 iPad Air 2 上,它们没有变灰,我可以成功导入它们。当使用 iCloud Drive 和 Dropbox 作为文件提供者时,我们都可以看到这一点。
我们的设备有什么不同?我的客户通过 TestFlight 将应用程序安装为内部测试人员。
此外,导入 UTI 中的文件扩展名是否区分大小写?我不这么认为。
然后我想知道是否应该添加文档类型图标。根据参考,该图标不是必需的。
这是呈现的代码UIDocumentPickerViewController
:
let utis = [String](PlaylistItem.utiToType.keys)
let viewController = UIDocumentPickerViewController(documentTypes: utis, in: .import)
viewController.delegate = self
viewController.modalPresentationStyle = .formSheet
if #available(iOS 11, *) {
viewController.allowsMultipleSelection = true
}
self.present(viewController, animated: AppDelegate.isAnimationsEnabled, completion: nil)
在类中使用此 UTI 定义PlaylistItem
:
enum FileType: Int {
case other
case mid
case mp3
case m4a
case aiff // AIFF audio recording
case wave
case turboMidi // purchased MIDI file
case style
}
static let kUTTypeStyleYamaha = "com.turboreini.style" // matches document types in Info.plist
static let utiToType: [String: FileType] = [
kUTTypeMPEG4Audio as String: .m4a,
kUTTypeMP3 as String: .mp3,
kUTTypeMIDIAudio as String: .mid,
PlaylistItem.kUTTypeStyleYamaha: .style
]
请注意,我为样式文件选择了一个任意标识符,因为我在 Internet 上找不到官方标识符。
这个问题让我抓狂。我找不到任何问题。
我想知道它是否取决于其他已安装的应用程序。
除了导入 .sty 文件外,该应用程序还创建具有自己扩展名的自定义文件。为此,我定义了一个导出的 UTI。它工作正常,没有文件变灰。但导入 .sty 文件的解决方案不应是将条目从 Imported 移至 Exported UTI。我的应用程序只是 .sty 文件的“查看器”。
对此案的任何想法将不胜感激。