如何在没有UI的Cocoa应用程序中将“关于”窗口设置为最前面的窗口?

时间:2010-04-24 23:27:10

标签: objective-c cocoa

我正在构建一个Cocoa应用程序,它作为状态栏中的项目运行。这个应用程序有一个About窗口和一个激活窗口的项目,使用标准的Cocoa机制(-[NSApplication orderFrontStandardAboutPanel:])。当然,这一切都是自动化的。

除了一件事之外,它的效果很好:与大多数关于Windows不同,它会在所有其他窗口下面显示,而不是在顶部。我相信这是因为应用程序没有UI,所以它的所有窗口都自动在其他窗口下面。有没有办法可以挂钩到NSApplication机制来显示About窗口,这样我就可以把它发送到前面,让它响应⌘-W,这样它就可以从键盘上关闭了?我在NSApplication的文档中讨论过,但是没有办法获得我可以看到的About窗口的引用,以便我可以将它显示在顶部。

1 个答案:

答案 0 :(得分:6)

  

有没有办法可以挂钩进入NSApplication机制来显示“关于”窗口,这样我就可以把它发送到前面了?

这就是orderFrontStandardAboutPanel:的作用。

  

除了一件事之外,它的效果很好:与大多数关于Windows不同,它显示在所有其他窗口的下方,而不是在顶部。我相信这是因为应用程序没有UI,所以它的所有窗口都自动在其他[应用程序]窗口之下。

使用[NSApp activateIgnoringOtherApps:YES]尝试bringing your application to the front

请注意,如何使您的应用程序“没有UI”很重要:如果您正在使用LSUIElement,那将会有效,而LSBackgroundOnly非常严格意味着background-