【发布时间】:2015-06-02 09:50:41
【问题描述】:
我正在为 OS X 开发一个仅限菜单栏的应用程序,我正在努力让设置窗口显示在其他应用程序的前面。
应用设置
“仅菜单栏应用”是指:
- 我从主情节提要文件的
NSWindowController中删除了“是初始控制器”。我的应用中没有使用主情节提要的窗口 - 我在主情节提要的“应用场景”中添加了一个
NSMenu。这将成为我的菜单栏菜单 - 我将
LSUIElement设置为YES以隐藏停靠图标 - 我将
LSBackgroundOnly设置为NO(见NSWindow makeKeyAndOrderFront makes window appear, but not Key or Front)
当应用程序启动时,我创建了一个NSStatusItem 并将情节提要中的NSMenu 添加为其菜单。这一切都很好 - 应用程序启动,没有显示窗口和停靠图标,而是一个包含故事板菜单的菜单栏项。
设置窗口
我现在想添加一个在单击菜单栏条目时显示的设置窗口。我因此:
- 创建了一个新的 .xib 文件并向其中添加了
NSWindow - 创建了一个自定义的
NSWindowController,用于连接出口和操作 - 在应用启动时使用
initWithNibNamed:实例化自定义NSWindowController
当单击菜单中的“设置”条目时,我尝试使用以下命令将设置窗口置于前面:
[self.settingsWindowController.window center];
[self.settingsWindowController.window showWindow:self];
[self.settingsWindowController.window makeKeyAndOrderFront:NSApp];
显示窗口,但没有被带到前面,而是隐藏在其他应用程序后面。
任何想法如何解决这个问题?谢谢!
【问题讨论】:
标签: objective-c xcode macos window nswindowcontroller