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

问题描述

我有一个MacOS应用程序,该程序通过实现add_action( 'woocommerce_payment_complete','do_something_after_payment_complete' ); function do_something_after_payment_complete( $order_id ){ $order = wc_get_order( $order_id ); if ( $order->has_status( 'completed' ) ) { // Do something } } 来侦听关键事件。我使用它来启用诸如NSWindow.keyDown(with event:)之类的快捷方式来创建新项目。除非有⌘ n是第一响应者,否则此方法效果很好。在这种情况下,文本视图将吞没该事件,而我的NSTextView函数将不会被调用。如何防止这种情况发生,并让Textview将事件发送给下一个响应者(最终是我的keyDown)?

解决方法

您可以将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)
    }
}