我可以创建NSWindow的子类,并告诉界面构建器创建该类型的主窗口.然后,当我在我的新NSWindow子类中覆盖keyDown消息时,它获取事件,但我不知道如何将它连接到我的应用程序委托类(因为我基本上只想打开按下的键并调用相应的消息在代表中按钮“选择”动作的目标.
或者,我想通过将应用程序委托类的超类从NSObject更改为NSView或NSResponder等,我听到了这样做.我没有太多讨论这个想法,但我不确定如何实际获得应用程序委托对象然后实际设置为第一响应者(我认为这是我想要做的).
所以,我希望有人可以就如何/在哪里实现我的keyDown方法给出具体指示,但我也想了解推荐的“最佳实践”是做什么的. Apple会说这是正确的架构吗?我很有兴趣学习如何使这项工作学习它背后的Apple设计模式.
我的程序结构如下:
我有一个nib文件(实际上是.xib),我设计了一个带有文本框的窗口,用于显示和一个按钮.我已经在那里注册了AppDelegate类的插座和操作(标准项目模板为你设置的那个).遵循MVC模式,然后我有一个AppDelegate初始化的Calculator类,计算器的所有实际逻辑都在该类中. AppDelegate基本上只响应来自按钮的消息,将它们传递给Calculator类中的方法,然后向Calculator询问当前显示值并将其更新回到文本框中.因此,我的nib文件中的图形元素是“视图”,AppDelegate是“控制器”,而Calculator类是“模型”.对?
那么,谁应该处理keyDown事件?看起来像视图应该捕获它们并将它们发送到控制器,但我该如何设置它?
我想一个可能相关的问题是我看过“窗口控制器”和“视图控制器”类的提及.我不确定我明白这些课程的重点是什么.我的简单应用程序有它们吗?应该是?