Разрешение любого типа на панели «Открыть» в приложении на основе документов - PullRequest
0 голосов
/ 01 марта 2012

Я пишу основанное на документе приложение 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 Ответ

1 голос
/ 01 марта 2012

В вашем подклассе NSDocumentController переопределите runModalOpenPanel:forTypes: и просто вызовите super с nil для массива types. Это включит все имена файлов в NSOpenPanel.

...