Cocoa开发中的窗口、面板与控制器使用指南
1. Cocoa应用的窗口特性
在Cocoa开发里,和其他一些GUI工具包不同,创建新应用时无需对应用类和窗口类进行子类化。Cocoa能实现应用的模型、视图和控制器部分的真正分离。窗口只需知道如何显示自身,并为其视图提供图形上下文。而应用运行时窗口的相关操作,如从nib文件加载、在屏幕上拖动或被用户关闭等,通常由窗口的委托对象(即控制器)处理。
-
输入处理
- 鼠标输入 :NSWindow除了为视图提供显示框架,还处理来自鼠标和键盘的用户输入。在NSWindow中的任何鼠标操作(点击、拖动、移动、释放等)都会触发NSWindow中的一个方法,该方法会在其内容中找到合适的视图对象,并在该视图中调用相同的方法。这是因为NSWindow和NSView都继承自NSResponder,处理这些事件的方法在NSResponder中定义。
- 键盘输入 :当用户按下或释放键盘上的键时,应用会调用应用“关键窗口”(即当前具有键盘焦点的窗口,通常是用户最后点击的窗口)中的一个方法,该方法会确定当前哪个视图具有键盘焦点,并将责任传递过去,在聚焦的视图中调用相同的方法。
-
NSWindow与NSPanel的选择
- 若无需修改窗口的基本外观,可使用NSWindow或其子类NSPanel来显示应用中的控件和其他视图。应用的核心元素通常放在NSWindow