是否可以根据修饰键更改NSOpenPanel的提示

时间:2015-02-21 01:22:14

标签: objective-c macos cocoa swift appstore-sandbox

我尝试创建一个NSOpenPanel子类,允许prompt(打开按钮标题)在用户按住Option键时更改,如下所示:

class CustomOpenPanel: NSOpenPanel {

    var standardPrompt: String?
    var alternatePrompt: String?

    override func flagsChanged(theEvent: NSEvent) {
        super.flagsChanged(theEvent)

        if standardPrompt == nil && alternatePrompt == nil {
            return;
        }

        let optionKeyDown = (theEvent.modifierFlags & .AlternateKeyMask) != nil

        self.prompt = optionKeyDown ? alternatePrompt : standardPrompt
    }

}

但是当我创建一个实例时(如此):

CustomOpenPanel *openPanel = [CustomOpenPanel openPanel];

我收到此消息:

  

AppDomain.CustomOpenPanel不是沙盒支持的子类

我想将此功能添加到我的应用中,并且我愿意接触其他方法,但是没有看到任何可行的功能。

  1. 有没有办法让我的课程“支持沙盒”?
  2. 是否有另一种方法可以实现切换prompt属性的目标,因为修改键被按下了?

1 个答案:

答案 0 :(得分:1)

抱歉,不希望您听到:

  1. 没有。您不能将沙箱下的标准文件面板子类化或添加类别。

  2. 自定义仅限于您在运行面板之前可以设置的属性以及您可以通过委托实现的属性。

  3. 可能会找到一种方法来做到这一点,我犹豫是否提出任何建议,因为在沙盒下玩文件面板是疯狂的途径,但它的强大可能性很低。

    因此,在不触及文件面板的情况下,考虑另一种满足您需求的方法。