问题描述
我有一个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)
}
}