将命令快捷方式发送到 NSTextView 的下一个响应者

Send command shortcut to NSTextView's next responder

我有一个 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)
    }
}