【问题标题】:Support closing of a NSWindow presented as sheet via escape key支持通过转义键关闭以工作表形式呈现的 NSWindow
【发布时间】:2015-04-28 16:13:42
【问题描述】:

如何设置 NSWindows(在 OS X 上)在用户按下退出键时关闭?

  • 该窗口通过以下方式显示为工作表 presentingWindow.beginSheet(mySheetWindow, completionHandler:nil)
  • 它有一个关闭按钮(通过 IB),其等效键设置为“退出”。这个关闭按钮已经可以使用了
  • 按转义键会导致系统音频错误输出(“Funk” - 声音),但不会记录日志,也不会关闭窗口。

【问题讨论】:

    标签: objective-c macos swift interface-builder


    【解决方案1】:

    您必须添加一个常规按钮并将其放置在窗口的左上角。将按钮宽度和 alpha 设置为 0。

    单击等效键字段并按 ESC。它将显示退出键图标

    然后为隐藏按钮创建 IBAction,如下所示:

    @IBAction func closeWindowAction(sender: AnyObject) {
    
        window.close()
    }
    

    确保您的窗户插座连接到正确的窗户:

    @IBOutlet weak var window: NSWindow!
    

    【讨论】:

    • 感谢您的示例。不幸的是,这无济于事,因为该窗口没有显示为一张纸。这只是主窗口。主窗口应该使用beginSheet(newWindow, completionHandler:nil) 显示另一个窗口,并且这个新窗口应该可以通过转义键关闭。
    • 我自己找到了解决方案...在我的情况下,我需要继承 NSWindow,覆盖 canBecomeKeyWindow 并返回 true。否则它不起作用!
    • 是的 - 那是我的问题。我有(已经拥有它)一个标题为“关闭”的 NSButton,其等效键设置为“转义”。由于窗口不能成为 keyWindow 按下转义导致音频错误输出。它现在正在工作。谢谢你帮助我!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多