【问题标题】:How to dismiss an OS X modal sheet with *either* ENTER or ESC key如何使用 *enter 或 ESC 键关闭 OS X 模式表
【发布时间】:2015-03-04 17:02:31
【问题描述】:

我的应用程序启动了一个具有多个按钮的模式表。其中之一是默认按钮(等效键 \r),按键盘上的 ENTER 键会按预期关闭工作表。如果用户按下 ESC 键,我希望也能达到相同的效果。所以 either ENTERESC 应该是按钮的等效键。如何实现?

【问题讨论】:

    标签: macos cocoa interface-builder


    【解决方案1】:

    -[NSResponder cancelOperation:],自动绑定到转义键:

    此方法绑定到 Escape 和 Command-。 (句号)键。键窗口首先在视图层次结构中搜索其等效键为 Escape 或 Command-.(无论输入哪个键)的视图。如果这些视图都没有处理等效键,则窗口会向第一个响应者发送默认操作消息 cancelOperation:,然后消息从那里向上传播到响应者链。

    换句话说,您可以通过在应用程序的响应程序链中的某处实现-cancelOperation: 来处理转义键,例如窗口控制器。

    【讨论】:

    • 那么没有办法在 IB 中进行设置(无需编写代码)?
    • @MichaelTeper 你必须写代码。如果您想要一个可重用的 IB 解决方案,则可以购买 NSButton 子类并覆盖 -performKeyEquivalent: 来处理 Return 和 Escape。 cocoabuilder.com/archive/cocoa/…
    猜你喜欢
    • 2018-06-25
    • 2018-02-26
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多