在 Cocoa 中捕获未处理的键盘事件

Catch unhandled keyboard events in Cocoa

我正在开发 Cocoa 应用程序。

我想捕获所有未被任何响应者处理的键盘事件,并将它们报告给 Google Analytics。

为此,我想设置一个实现 keyDown: 的自定义 NSResponder 作为当前最后一个响应者的下一个响应者。

我应该在何时何地致电 setNextResponder: 以使我的自定义 class 成为最后一个响应者?

来自Apple docs

If no object is found to handle the event, the last responder in the chain invokes noResponderFor:, which for a key-down event simply beeps. Event-handling objects (subclasses of NSWindow and NSView) can override this method to perform additional steps as needed.