我有一个MacOS应用程序,它通过实现NSWindow.keyDown(with event:)
来侦听关键事件。我使用它来启用像⌘ n
这样的快捷方式来创建新项目。除了存在作为第一响应方的NSTextView
时,这一点工作良好。在这种情况下,文本视图将吞噬事件,并且不会调用我的keyDown
函数。如何防止这种情况,并让textview将事件发送到下一个响应程序(最终是我的NSWindow
(?
您可以子类NSTextView
覆盖keyDown
方法并调用下一个响应程序:
import Cocoa
class TextView: NSTextView {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
}
override func keyDown(with event: NSEvent) {
super.keyDown(with: event)
nextResponder?.keyDown(with: event)
}
}