如何在按下ESC键后在NSOutlineView内的NSTextFieldCell中结束编辑

时间:2011-04-30 10:01:43

标签: objective-c cocoa appkit nstextfieldcell

我正在尝试获取自定义NSTextFieldCell(在NSOutlineView内)以在按下ESC键时结束编辑但无法找到任何方法来完成此操作。我尝试为NSControlTextDidChangeNotification - 通知添加一个观察者,但是它没有针对ESC键触发,keyDown也没有触发NSOutlineView

2 个答案:

答案 0 :(得分:20)

Esc在NSResponder中触发-cancelOperation。您可以尝试在响应链中的某个位置处理此问题。

答案 1 :(得分:0)

接受的答案是正确的。详细说明:为了捕获ESC键事件,您可以在NSViewController(或您使用的NSResponder的任何其他派生类)中覆盖cancelOperation方法。这就是我在Swift 4.x中的代码。

class PopUIcontroller: NSViewController, NSTextFieldDelegate {

      override func cancelOperation(_ sender: Any?) {
        print("trying to cancel! Here I will do stuff to handle ESC key press!")

      }

}

更多阅读内容:NSWindowController can't capture ESC without WebView is added to the window