我正在使用一个具有状态菜单的应用程序,用户可以从该菜单打开该应用程序的主窗口。我希望能够在全屏应用程序顶部打开此窗口。如果“应用程序是代理”(UIElement)设置为“ YES”,则以下代码可以正常工作:
- (IBAction)showMainWindow:(id)sender
{
[_window makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];
}
但是,我也希望在底座中也有一个图标。如果“应用程序是代理程序”(UIElement)设置为“否”,则showMainWindow会导致应用程序跳转到其他空间,而不是出现在活动的全屏应用程序顶部。这个问题有方法解决吗?
最佳答案
为了完整起见,我在这里回答我自己的问题。
经过更多的研究之后,再也没有办法了。这只是OS X的工作方式。
我的解决方案:我为用户提供了应用程序首选项中的一个选项,无论他们是希望该应用程序是停靠类型应用程序还是代理类型。在主列表中将“应用程序代理”(UIElement)设置为“是”。通过将应用程序激活策略设置为NSApplicationActivationPolicyRegular,可以在运行时更改应用程序类型。