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