Cocoa:接收已运行应用程序的dock图标点击



我正在编写一个应用程序,该应用程序启动时会显示一个主窗口。当窗口关闭时,我希望应用程序保持运行(带有菜单栏菜单),如果用户再次单击停靠图标,我希望主窗口再次出现。

我已经做到了90%:在用Cmd-W关闭主窗口后,我的应用程序可以正常运行,并且由于未选中"关闭时释放",因此当单击dock图标时,可以对窗口进行[makeKeyAndOrderFront:]-ed以再次显示它。

这个谜题中唯一缺少的部分是拦截实际的dock图标点击。

关于此主题的其他线程建议在窗口控制器中实现applicationShouldHandleReopen:hasVisibleWindows:或applicationShouldOpenUnttledFile:。我两个都做过,谁也没接到电话。

还有其他想法吗?

关于此主题的其他线程建议在窗口控制器中实现applicationShouldHandleReopen:hasVisibleWindows:或applicationShouldOpenUnttledFile:。

只有当窗口控制器是应用程序的委托时,这才是真的。这就是应用程序将这些消息发送到的对象。

不过,我不会将窗口控制器作为应用程序的委托。我通常把它们做成两个单独的物体。指定一个对象作为应用程序的委托,当该对象接收到相关的委托消息时,向您的窗口控制器发送一条消息,告诉它做任何需要做的事情。

实际上,我通常在单窗口应用程序中所做的是让应用程序的代理创建并拥有窗口控制器。您可以通过扔掉WC来响应窗口关闭,并通过检查是否有WC来响应重新打开,如果没有,则创建一个WC(从而重新打开窗口)。

awakeFromNib中使用[NSApp setDelegate:self];

最新更新