【发布时间】:2011-12-12 18:27:57
【问题描述】:
我正在构建一个在后台运行但有一个主窗口的 Cocoa Mac 应用程序。
为了让它在后台运行,我将“应用程序仅在后台”设置为“是”。
我建了一个系统托盘:
如果您关闭了主窗口,您可以通过点击“打开”重新打开它。
但是,我对窗口的分层有一些问题:
- 当我启动应用程序时,主窗口打开,但它出现在后台,位于我当时打开的任何其他窗口或应用程序的后面。
- 单击“打开”不会将窗口置于前台。如果它关闭,它会正确打开,但它会留在任何窗户后面。
- 单击首选项或关于有同样的问题。它会打开正确的窗口,但会出现在任何其他窗口的后面。
- 在我的主窗口中有一个文本字段。我可以点击它,光标会闪烁,就好像我准备好打字一样。但是当我输入它时,它实际上输入了其他一些背景窗口!例如,如果我在后台打开 TextWrangler,它将在那里输入而不是文本字段...
这是我处理“打开”的代码:
- (IBAction)show:(id)sender {
[NSApp activateIgnoringOtherApps:YES];
[window makeKeyAndOrderFront:sender];
}
请注意,如果我将“应用程序仅在后台”设置为“否”(这意味着我有一个停靠图标出现),然后单击“打开”会按预期将窗口带到前台。并且在文本字段中输入按预期工作。
【问题讨论】:
标签: objective-c macos cocoa user-interface layer