0

どんなタイプでも開くことができるドキュメントベースの 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 タイルにファイルをドロップしない限り、これらのメソッドは呼び出されません。

4

1 に答える 1

1

NSDocumentControllerサブクラスでは、オーバーライドして、配列runModalOpenPanel:forTypes:に nil を指定して super を呼び出すだけです。typesこれにより、 内のすべてのファイル名が有効になりますNSOpenPanel

于 2012-03-01T16:53:29.873 に答える