繁体   English   中英

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

[英]How to allow files with exec permission in NSOpenPanel?

第三方开源VSTGUI中的Cocoa NSOpenPanel禁用设置了执行权限的文件。 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)

使用kUTTagClassFilenameExtension作为inTagClass ,所需的扩展名为inTagkUTTypeData作为inConformingToUTI 如果我将types参数作为具有简单扩展字符串而不是UTI的数组给出,那么一切都会按预期进行。 因此,我猜想kUTTypeData提示类型可以将具有exec位设置的文件排除在外。 不幸的是, 文档中没有说明inConformingToUTI其他任何有效值。

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

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

或类似。 请参阅《 NSOpenSavePanelDelegate协议参考》

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM