我想处理主窗口的顶级键事件。我的理解是否正确,我应该如何去做?
我可以创建一个
NSWindowController
子类并覆盖它的keyDown
事件(因为控制器是响应者链的一部分),并将主 NIB 的文件所有者设置为所述控制器类。现在,因为主窗口是在内部创建的,NSApplicationMain
并且窗口所有者被NSApplication
无条件设置为,所以我必须放弃这个并以编程方式创建主窗口initWithWindowNibName:
,编写一些样板来设置其委托,显示窗口等。另一种可能性是子类化
NSWindow
类,覆盖它的keyDown
事件并将主窗口的类设置为它,但这带来了许多它自己的问题:现在我需要窗口内的所有出口来实际处理事件,它变成了它自己的东西控制器。
在这一点上,我正在从事极端牦牛剃须来解决一个看似简单的问题。我怀疑这可能是由于我在 Cocoa 方面缺乏经验,但有没有更好的 Proper™ 方法来做到这一点?我觉得我真的不应该表演这些杂技。
附言
据我所知,这也适用于performKeyEquivalent
,不仅keyDown
。