Cocoa开发中的窗口、菜单与面板使用指南
1. Cocoa窗口特性
在Cocoa开发里,和其他GUI工具包不同,它能实现应用程序的模型、视图和控制器部分的真正分离。窗口只需知晓如何展示自身,并为视图提供图形上下文。窗口运行时的相关代码,通常由窗口的委托对象(即控制器)来处理。
1.1 输入处理
NSWindow除了为视图提供展示框架,还能处理鼠标和键盘的用户输入:
- 鼠标操作 :在NSWindow中的任何鼠标动作(点击、拖动、移动、释放等),都会触发NSWindow中的一个方法,该方法会找到内容中合适的视图对象,并在视图中调用相同的方法。这是因为NSWindow和NSView都继承自NSResponder,处理这些事件的方法在NSResponder中定义。
- 键盘操作 :当用户按下或释放键盘上的键时,应用程序会调用“关键窗口”(即当前拥有键盘焦点的窗口,通常是用户最后点击的窗口)中的一个方法,该方法会确定当前哪个视图拥有键盘焦点,然后将责任传递过去,在聚焦的视图中调用相同的方法。
1.2 NSWindow与NSPanel的选择
若无需修改窗口的基本外观,可使用NSWindow或其子类NSPanel来展示应用程序中的控件和其他视图。应用程序的核心元素通常放在NSWindow中,而NSPanel用于辅助窗口,如Interface Builder中的检查器。从用户角度看,NSWindow和NSPanel有以下关键区别:
| 区别 | NSWindow | NSPanel |
| ---- | ---- | ---- |
超级会员免费看
订阅专栏 解锁全文
18

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



