Cocoa开发中的窗口、面板及相关功能详解
1. Cocoa窗口基础特性与输入处理
Cocoa在应用开发中允许真正分离应用的模型、视图和控制器部分。与其他GUI工具包不同,创建新应用时无需对应用类和窗口类进行子类化。窗口只需知道如何显示自身并为其视图提供图形上下文,而窗口运行时的相关代码(如从nib文件加载、被拖动或关闭等)通常由窗口的委托对象(即控制器)处理。
NSWindow除了为视图提供显示框架外,还处理鼠标和键盘的用户输入。鼠标在NSWindow中的任何操作(点击、拖动、移动、释放等)都会触发NSWindow中的方法,该方法会找到内容中的适当视图对象,并在视图中调用相同的方法。这是因为NSWindow和NSView都继承自NSResponder,其中定义了处理这些事件的方法。同样,当用户按下或释放键盘上的键时,应用会调用应用的“关键窗口”(即当前具有键盘焦点的窗口,通常是用户最后点击的窗口)中的方法,该方法会确定当前哪个视图具有键盘焦点,并将责任传递给该焦点视图,调用其相同的方法。
2. NSWindow与NSPanel的选择与区别
在不修改窗口基本外观的情况下,可使用NSWindow或其子类NSPanel来显示应用中的控件和其他视图。应用的核心元素通常位于NSWindow中,而NSPanel用于辅助窗口,如Interface Builder中的检查器。从用户角度来看,NSWindow和NSPanel有以下关键区别:
| 特性 | NSWindow | NSPanel |
| ---- | ---- | ---- |
| 激活显示 | 不受其他应用激活影响 | 其他应用激活时通常不可见,自身应用激活时重新出现 |
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



