允许基于文档的应用程序中的“打开”面板中的任何类型

时间:2012-03-01 02:11:46

标签: macos cocoa appkit nsopenpanel launch-services

我正在编写一个可以打开任何类型的基于文档的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磁贴上,否则不会随时调用这些方法。

1 个答案:

答案 0 :(得分:1)

NSDocumentController子类中,覆盖runModalOpenPanel:forTypes:,只需使用nil调用super types数组。这将启用NSOpenPanel

中的所有文件名