我正在编写一个可以打开任何类型的基于文档的Mac应用程序。我的应用程序成功地在Dock平台上接收任何类型的已删除文件,但是当我从“文件”菜单中选择“打开”时,所有文件都显示为灰色。
这是模板附带的标准Open项目;我没有在它背后添加任何特别的东西。
以下是我的Info.plist的相关部分:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFile</key>
<string></string>
<key>CFBundleTypeName</key>
<string>Any file</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>****</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSTypeIsPackage</key>
<false/>
<key>NSDocumentClass</key>
<string>MyDocument</string>
</dict>
</array>
我有一个自定义文档控制器;这是它的实现。
- (Class) documentClassForType:(NSString *)documentTypeName {
return [MyDocument class];
}
- (NSString *) typeForContentsOfURL:(NSURL *)inAbsoluteURL error:(NSError **)outError {
return @"Any file";
}
除非我将文件拖放到Dock磁贴上,否则不会随时调用这些方法。
答案 0 :(得分:1)
在NSDocumentController
子类中,覆盖runModalOpenPanel:forTypes:
,只需使用nil调用super types
数组。这将启用NSOpenPanel
。