macOS UI 按下Dock上圖示重新開啟應用程式主視窗

按下Dock上圖示重新開啟應用程式主視窗

當你在Mac上建立一個新應用程式時,有許多預設選項會被建立,但有一件事情預設值可能不盡理想,那就是當你將你的應用程式按下視窗鍵上的關閉時,應用程式會被隱藏,只要在Dock上按下你的應用程式圖示時,應用程式主視窗怎樣也不會再出現了!

上圖動畫可以了解先前描述的問題,接下來該怎麼解決它呢?當我們建立應用程式時,主視窗是繼承NSApplication,但很多細節已經被自動處理完成,不過可以從標頭檔中得知,應用程式有使用到NSApplicationDelegate,然而一些相關資料就在NSApplicationDelegate之中,當在Dock上按下自已應用程式圖示時,會產生Delegate:

- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag;

此時利用hasVisibleWindows:(BOOL)flag來得知應用程式是不是被隱藏,如果是(YES),那就重新將它恢復:

//-----------start-----------
- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag {

    if(flag==NO){
        [self.window makeKeyAndOrderFront:self];//重新將視窗顯示於最前面
    }
    return YES;
}
//------------end------------

短短的程式內容就完成這個預設功能的問題,要此細看Apple官方文件內容才有機會取得這項資訊(找了好久!!!)。

參考資料

NSApplicationDelegate Protocol Reference