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

mip*_*adi 5 cocoa objective-c

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

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

Pet*_*sey 6

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

这是什么orderFrontStandardAboutPanel:.

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

尝试把你的应用程序前[NSApp activateIgnoringOtherApps:YES].

请注意,如何使您的应用程序"没有UI"很重要:如果您使用的是LSUIElement,那么它将起作用,而LSBackgroundOnly非常严格意味着仅限背景.