我有一个基于文档的应用程序,有一个主文档窗口和几个显示相关信息的“卫星”NSPanel 窗口。它们不是浮动的,它们可以(并且确实)成为关键,并且似乎与主窗口位于同一层。
我尝试像这样实现显示/隐藏操作:如果面板不可见 - 显示它。如果它是可见的,但不是前面 - 让它在前面。如果它是可见的并且在前面 - 隐藏它。
为此,我需要知道 NSPanel 是否是“最前面的”。遗憾的是没有 NSWindow API 存在。我试图用它windowNumbersWithOptions
来比较我的面板的 z 顺序。
-(void) togglePanelVisibility:(PMXPanelController *)panelController {
NSPanel *panel = [panelController window];
if ([panel isVisible]) {
NSArray *windowNumbers = [NSWindow windowNumbersWithOptions:0];
if ([panel windowNumber] == [[windowNumbers firstObject] integerValue]) {
[panel orderOut:self];
}
else {
[panel makeKeyAndOrderFront:self];
}
} else
[panelController showWindow:self];
}
唉,我收到的数组只包含一个数字 - 用于我的主文档窗口。我可以在“窗口”菜单中看到我的面板,我可以单击它们将它们带到前面,我可以关闭它们并使用它们 - 但我无法通过 windowNumbersWithOptions 获取它们的编号:
任何人的想法?