如何在NSOpenPanel中允许具有exec权限的文件?

时间:2013-05-04 17:06:32

标签: objective-c macos cocoa permissions nsopenpanel

Cocoa NSOpenPanel位于第三方开源库VSTGUI中,禁用具有exec权限集的文件。不需要exec位,但通常似乎是在Windows上创建的文件上设置并下载到OS X.

图书馆使用beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo:来显示面板。给定的types参数是具有基于UTI的简单扩展的单例数组。什么可能导致面板禁止这些文件以及如何以及在何处配置行为?

我知道该方法已经或将被弃用,但现在我似乎仍然坚持这一点。我在OS X 10.8上,Xcode中的部署目标是10.5。

编辑:

此处使用的UTI是使用函数

创建的
CFStringRef UTTypeCreatePreferredIdentifierForTag(CFStringRef   inTagClass,
                                                  CFStringRef   inTag,
                                                  CFStringRef   inConformingToUTI)

kUTTagClassFilenameExtensioninTagClass,所需的扩展名为inTagkUTTypeDatainConformingToUTI。如果我将types参数作为带有简单扩展字符串的数组,而不是UTI,一切都按预期工作。所以我想kUTTypeData提示类型的exec位设置规则。很遗憾,documentation并未告知inConformingToUTI可能有效的任何其他值。

1 个答案:

答案 0 :(得分:0)

开放式面板很可能有一个委托集,它实现了方法

- (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url

或类似的。请参阅NSOpenSavePanelDelegate Protocol Reference