如何处理主窗口的keyDown事件没有痛苦?

时间:2013-06-24 15:31:34

标签: objective-c macos cocoa

我想处理主窗口的顶级关键事件。我的理解是否应该如何实现呢?

  1. 我可以创建一个NSWindowController子类并覆盖其keyDown事件(因为控制器是响应者链的一部分),并将主NIB的文件所有者设置为所述控制器类。现在,因为主窗口是在NSApplicationMain的内部创建的,并且窗口所有者无条件地设置为NSApplication,所以我必须放弃这个并使用initWithWindowNibName:以编程方式创建主窗口,写一些样板设置其委托,显示窗口等

  2. 另一种可能性是继承NSWindow类,覆盖其keyDown事件并将主窗口的类设置为它,但这带来了许多问题:现在我需要所有的插件窗口实际上对事件做了一些事情,它变成了自己的控制器。

  3. 此时我正在进行极端yak shaving以解决一个看似简单的问题。我怀疑这可能是由于我对Cocoa的经验不足,但有没有更好的Proper™方法呢?我觉得我真的不应该去做这些杂技。

    P.S。

    据我所知,这也适用于performKeyEquivalent keyDown

0 个答案:

没有答案