当我关闭我的Mac应用程序时(通过单击窗口顶部栏上的红色十字按钮),应用程序图标将保留在底部的停靠栏中。现在这是正常的行为。当用户再次点击它时,它不会启动应用程序,除非用户完全退出应用程序并重新启动它。
Mac OS X上的类似示例是“活动监视器”。您可以通过单击顶部的红色十字按钮关闭应用程序,但停靠图标停留在那里。用户可以通过单击停靠图标重新打开它。
我如何在自己的应用程序中实现这一目标?
答案 0 :(得分:21)
如果您仍然担心如何重新打开已关闭的窗口,请使用以下方法:
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag {
[window makeKeyAndOrderFront:self];
return YES;
}
您可以使用它来处理停靠栏中应用程序图标的点击。
有关详细信息,请查看NSApplicationDelegate协议参考。
以下是文档:
希望这有帮助!
答案 1 :(得分:3)
实施方法
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
return NO;
}
在你的app delegate
中您的应用会在窗口关闭后徘徊,然后如果您实施
- (void)applicationDidBecomeActive:(NSNotification *)aNotification
{
//dock icon has just been clicked , or cmd-tabbed into
}
在app delegate
中如果需要
,您可以在点击图标时执行操作,例如打开新窗口或旧窗口有关其他相关应用事件,请参阅http://developer.apple.com/library/mac/#documentation/cocoa/reference/NSApplicationDelegate_Protocol/Reference/Reference.html
答案 2 :(得分:0)
我认为上述答案并非完全正确,为此,您应该覆盖applicationShouldHandleReopen(_:hasVisibleWindows:)
https://developer.apple.com/reference/appkit/nsapplicationdelegate/1428638-applicationshouldhandlereopen