我正在开发一款仅有菜单栏的OS X应用程序,但是我在努力让设置窗口显示在其他应用程序前面。
应用程序设置
"仅有菜单栏的应用程序"意味着:
- 我从主Storyboard文件的
NSWindowController
中删除了"Is Initial Controller"。我的应用程序不使用主Storyboard的窗口 - 我在主Storyboard的"Application Scene"中添加了一个
NSMenu
。这将成为我的菜单栏菜单 - 我将
LSUIElement
设置为YES
以隐藏Dock图标 - 我将
LSBackgroundOnly
设置为NO
(参见NSWindow makeKeyAndOrderFront makes window appear, but not Key or Front)
当应用程序启动时,我创建了一个NSStatusItem
,并将Storyboard中的NSMenu
作为其菜单添加到其中。这一切都很好 - 应用程序启动,没有窗口和Dock图标,只有一个包含Storyboard中菜单的菜单栏项目。
设置窗口
现在我想添加一个设置窗口,当单击菜单栏条目时显示。因此,我:
- 创建了一个新的.xib文件,并在其中添加了一个
NSWindow
- 创建了一个自定义的
NSWindowController
,连接了输出和动作 - 使用应用程序启动时的
initWithNibNamed:
实例化了自定义的NSWindowController
当单击菜单中的"设置"条目时,我尝试使用以下方法将设置窗口置于前台:
[self.settingsWindowController.window center];
[self.settingsWindowController.window showWindow:self];
[self.settingsWindowController.window makeKeyAndOrderFront:NSApp];
窗口已经显示,但没有置于前台,而是隐藏在其他应用程序后面。
有什么解决方法吗?谢谢!