【问题标题】:How to allow files with exec permission in NSOpenPanel?如何在 NSOpenPanel 中允许具有 exec 权限的文件?
【发布时间】:2013-04-28 21:55:59
【问题描述】:

第三方开源库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)

kUTTagClassFilenameExtensioninTagClass,所需的扩展名为 inTagkUTTypeDatainConformingToUTI。如果我将types 参数作为具有简单扩展字符串的数组而不是UTI,则一切都按预期工作。所以我猜kUTTypeData 提示类型排除了设置了 exec 位的文件。不幸的是,documentation 没有告诉inConformingToUTI 的任何其他值。

【问题讨论】:

    标签: objective-c macos cocoa permissions nsopenpanel


    【解决方案1】:

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

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

    或类似的。请参阅NSOpenSavePanelDelegate Protocol Reference

    【讨论】:

    • 不,很遗憾,情况并非如此。
    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2020-09-04
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多