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

Objective c 按ESC键后,如何在NSOutlineView内的NSTextFieldCell中结束编辑,objective-c,cocoa,appkit,nstextfieldcell,Objective C,Cocoa,Appkit,Nstextfieldcell,当按下ESC键时,我试图让一个自定义的NSTextFieldCell(在NSOutlineView中)结束编辑,但找不到任何方法来完成此操作。我试图为NSControlTextDidChangeNotification-通知添加一个观察者,但在NSResponder中的NSOutlineViewESC触发器-cancelOperation中,它既没有为ESC键触发,也没有为keyDown触发。您可以尝试在响应者链中的某个位置处理此问题。公认的答案是正确的。详细说明:为了捕获ESC键事件,可以覆盖

当按下ESC键时,我试图让一个自定义的
NSTextFieldCell
(在
NSOutlineView
中)结束编辑,但找不到任何方法来完成此操作。我试图为
NSControlTextDidChangeNotification
-通知添加一个观察者,但在NSResponder中的
NSOutlineView
ESC触发器
-cancelOperation
中,它既没有为ESC键触发,也没有为
keyDown
触发。您可以尝试在响应者链中的某个位置处理此问题。

公认的答案是正确的。详细说明:为了捕获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!")

      }

}

更多阅读:

谢谢。我使用-(void)cancelOperation:(id)发送方{[self abortEditing];[self window]makeFirstResponder:self];}运行,谢谢。我一直在想如何做这种事情有一段时间了。