在我的第一個Cocoa應用程序中,我只有一個窗口,其中有2個NSTextField
實例 - 用於用戶文本輸入和輸出文本處理。NSWindow代表(windowShouldClose)
如果我的用戶點擊左上角的紅色x,窗口關閉,但應用程序仍在運行,圖標停留在擴展塢 - 正常的Mac行爲。
當用戶雙擊Dock或桌面上的圖標時,這不會重新打開窗口 - 顯然也是正常的Mac行爲,但會讓用戶感到困惑。
要使應用程序恢復運行狀態,用戶必須強制從主菜單或上下文菜單中退出,並通過單擊其中一個圖標重新啓動應用程序。
我搜索蘋果文檔和論壇,以及它似乎是以下應防止窗口關閉(我的第一選擇:隱藏寡婦,因此它可以在以後重新打開):
添加一個委託到NSApp
委託實現
-applicationShouldHandleReopen
它調用[mainWindow makeKeyAndOrderFront:self];返回TRUE委託實現
-windowShouldClose
返回FALSE 然而,儘管-windowShouldClose
被調用時,窗口將關閉。
我在這裏錯過了什麼?
作爲替代(我的第二偏好),I加入到委託
-applicationShouldTerminateAfterLastWindowClosed
它返回YES
這工作,即,在應用程序關閉時點擊紅色的x, ,用戶可以稍後重新啓動應用程序。
澄清和指向特定的文檔和工作代碼示例將不勝感激。
魯迪
是的,我同意像這樣重新開放是另一種偉大的Mac式的方法。當然,這取決於他的應用程序。如果它是一個基於文檔的應用程序,那麼保持應用程序運行並重新處理是最好的(一個TextEdit)。如果它是一個小型的實用程序應用程序,我會說關閉它,並讓用戶重新啓動應用程序。 – kperryua 2009-07-07 19:19:49