當我關閉我的Mac應用程序時(通過單擊窗口頂部欄上的紅色十字按鈕),應用程序圖標停留在底部的擴展塢中。現在這是正常的行爲。當用戶再次點擊它時,它不會啓動應用程序,除非用戶完全退出應用程序並再次重新啓動應用程序。關閉Mac應用程序(單擊頂部的紅色十字)並通過點擊停靠圖標重新打開
Mac OS X上的一個類似示例是「活動監視器」。您可以點擊頂部的紅色十字按鈕關閉應用程序,但停靠圖標停留在此處。用戶可以通過點擊停靠圖標重新打開它。
我如何在自己的應用程序中實現這一目標?
當我關閉我的Mac應用程序時(通過單擊窗口頂部欄上的紅色十字按鈕),應用程序圖標停留在底部的擴展塢中。現在這是正常的行爲。當用戶再次點擊它時,它不會啓動應用程序,除非用戶完全退出應用程序並再次重新啓動應用程序。關閉Mac應用程序(單擊頂部的紅色十字)並通過點擊停靠圖標重新打開
Mac OS X上的一個類似示例是「活動監視器」。您可以點擊頂部的紅色十字按鈕關閉應用程序,但停靠圖標停留在此處。用戶可以通過點擊停靠圖標重新打開它。
我如何在自己的應用程序中實現這一目標?
如果你還在關注如何重新打開已關閉的窗口,用這種方法請參見http://developer.apple.com/library/mac/#documentation/cocoa/reference/NSApplicationDelegate_Protocol/Reference/Reference.html處理對碼頭中應用程序圖標的點擊。
有關更多信息,請查閱NSApplicationDelegate協議參考。
下面是文檔:
希望這有助於!
實現該方法
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
return NO;
}
在應用程序委託
您的應用程序窗口後會流連關閉,然後如果你實現
- (void)applicationDidBecomeActive:(NSNotification *)aNotification
{
//dock icon has just been clicked , or cmd-tabbed into
}
在應用程序委託
當點擊圖標時,你可以做些事情,比如打開一個新的或舊的勝利
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag {
[window makeKeyAndOrderFront:self];
return YES;
}
您可以使用此:道指如果你需要
其他相關應用程序事件
我認爲,上述問題的答案是不完全正確,要實現這一點,你應該重寫applicationShouldHandleReopen(_:hasVisibleWindows:)
https://developer.apple.com/reference/appkit/nsapplicationdelegate/1428638-applicationshouldhandlereopen
他說,在applicationDidBecomeActive你可以看到,如果應用程序是沒有窗戶的,如果是,打開一個新的空白窗口(或類似)。 – 2011-03-31 12:35:38