[英]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
,所需的扩展名为inTag
而kUTTypeData
作为inConformingToUTI
。 如果我将types
参数作为具有简单扩展字符串而不是UTI的数组给出,那么一切都会按预期进行。 因此,我猜想kUTTypeData
提示类型可以将具有exec位设置的文件排除在外。 不幸的是, 文档中没有说明inConformingToUTI
其他任何有效值。
打开面板很可能具有一个委托集,该委托集实现了该方法
- (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url
或类似。 请参阅《 NSOpenSavePanelDelegate协议参考》 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.