0

我想处理主窗口的顶级键事件。我的理解是否正确,我应该如何去做?

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

  2. 另一种可能性是子类化NSWindow类,覆盖它的keyDown事件并将主窗口的类设置为它,但这带来了许多它自己的问题:现在我需要窗口内的所有出口来实际处理事件,它变成了它自己的东西控制器。

在这一点上,我正在从事极端牦牛剃须来解决一个看似简单的问题。我怀疑这可能是由于我在 Cocoa 方面缺乏经验,但有没有更好的 Proper™ 方法来做到这一点?我觉得我真的不应该表演这些杂技。

附言

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

4

0 回答 0