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左上角的關閉按鈕,而沒有執行結束模態的方法。整個系統仍然處于模態,其他窗口無法正常工作。