0

第三方开源库VSTGUI中的 Cocoa NSOpenPanel禁用具有 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)

使用kUTTagClassFilenameExtensionas inTagClass,所需的扩展名 asinTagkUTTypeDataas inConformingToUTI。如果我将types参数作为具有简单扩展字符串的数组而不是 UTI,则一切都按预期工作。所以我猜想这种kUTTypeData提示排除了设置了 exec 位的文件。不幸的是,文档没有说明任何其他价值inConformingToUTI

4

1 回答 1

-1

很可能打开的面板有一个委托集,它实现了该方法

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

或类似的。请参阅NSOpenSavePanelDelegate 协议参考

于 2013-05-04T19:18:40.263 回答