我正在构建一个在后台运行但有一个主窗口的Cocoa Mac应用程序。
为了让它在后台运行,我将“应用程序仅限背景”设置为“是”。
我制作了一个系统托盘:
如果您关闭主窗口,可以通过单击“打开”重新打开它。
然而,我有一些关于窗口分层的问题:
以下是我处理“开放”的代码:
- (IBAction)show:(id)sender {
[NSApp activateIgnoringOtherApps:YES];
[window makeKeyAndOrderFront:sender];
}
请注意,如果我将“应用程序仅为后台”设置为“否”(这意味着我出现了停靠图标),则单击“打开”会使窗口按预期显示在前台。并且在文本字段中输入按预期工作。
答案 0 :(得分:4)
我认为您希望将Application is agent (UIElement)
设置为YES
,而不仅仅是背景。背景仅适用于不希望用户看到的应用程序。
答案 1 :(得分:1)
仅背景(LSBackgroundOnly YES)适用于无面背景应用程序,附件(LSUIElement YES)适用于具有UI和状态菜单的背景应用程序(菜单附加/附件菜单/等等 - 名称更改...)。
附件不会出现在底座中,有标准菜单栏,或出现在Finder的强制退出对话框中。它可以是“活动的”,可以有关键窗口。
虽然如果在XIB中声明了MainMenu,但它没有标准的菜单栏(可能是一个bug),那么当它处于活动状态时它将响应关键快捷键。为避免这种情况,请确保您没有MainMenu或在您希望禁用快捷方式时使用[NSApp setMainMenu:nil]
。
整个背景/配件/应用/活动/等。区域不是很明确,准备好“有趣”......