title bar 标题栏
keyWindow 可以接收输入事件(键盘,鼠标,触控板等外设)的窗口
mainWindow 活动窗口
一个时刻只能有一个keyWindow和一个mainWindow。
keyWindow和mainWindow可以是同一个窗口,也可以是不同的窗口。当mainWindow可以接收输入事件时,它同时也是keyWindow(如文本编辑器)。
一些常用的子类有NSColorPanel(颜色选择),NSFontPanel(字体选择),NSSavePanel(保存打开文件)类型的window不能做为mainWindow,只能做为keyWindow。
模态窗口
有2种创建模态窗口的方法:
1.Modal windows
这种window比较霸道,当它启动后,此时只有这个window可以接收响应用户操作,无法切换到其他窗口操作,其他窗口也不能接收处理系统内部的各种事件。
使用NSApplication的runModalForWindow方法来创建Modal window
- (IBAction)showModelWindowAction:(id)sender {
[[NSApplication sharedApplication]runModalForWindow:self.myWindow];
}
使用stopModal方法来结束模态。
[NSApplication sharedApplication]stopModal];
2.Modal sessions
比起Modal windows,Modal sessions方式创建的window稍微温和一些,允许响应快捷键和系统菜单,比如字体颜色选择这些panel面板.
启动Modal sessions 窗口
NSModalSession sessionCode = [[NSApplication sharedApplication]beginModalSessionForWindow:window];
结束Modal sessions 窗口
使用sessionCode做为参数来关闭Modal sessions 窗口
[[NSApplication sharedApplication]endModalSession:sessionCode];
注意任何一种模态窗口,都必须调用结束模态的方法去结束模态。如果点击了window左上角的关闭按钮,而没有执行结束模态的方法。整个系统仍然处于模态,其他窗口无法正常工作。
网友评论