1

在我的应用程序中,我需要支持文件夹和文件选择。到目前为止,我有这些设置

NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];
[openPanel setAllowsMultipleSelection:YES];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanCreateDirectories:NO];

但是有了这个,任何人都可以选择.app文件(实际上是文件夹)。我看到有一个设置允许的文件类型的选项在这里不起作用,因为我需要一个通配符文件选择并且只排除特定类型。

有没有办法排除这些文件?

4

1 回答 1

2

- (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url 的使用NSOpenSavePanelDelegate。在此使用 NSURL 获取 UTI 并根据您接受的类型列表检查它。UTI 类型的完整列表。您还可以否定排除不支持类型的逻辑,以更适合您的应用程序和用户期望的方式为准。如果您可以足够快地评估文件,您甚至可以打开它,然后在面板中启用或禁用它。

- (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url
    NSString* itemUTI = nil;
    NSError* outErr = nil;
    BOOL showInPanel = NO;

    BOOL success = [url getResourceValue:&itemUTI NSURLTypeIdentifierKey error:&outErr];
    if ( ! success || nil == itemUTI) {
        // handle failure
    } else {
        showInPanel = UTTypeConformsTo(itemUTI, kUTTypeData) || UTTypeConformsTo(itemUTI, kUTTypeFolder);
    }

    return showInPanel;
}
于 2014-05-11T14:34:01.827 回答