我的应用程序中有一个带有按钮的 main NSWindow
。当按下按钮时,它会执行以下操作:
NSWindow *newWindow = [NSWindow initWithContentRect:[screen frame] styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
[newWindow makeKeyAndOrderFront:self];
[self.previousWindow orderOut:self];
这在大多数情况下都可以正常工作,但是如果我在按下按钮之前打开了第二个窗口(称为“其他”窗口)并且在另一个屏幕上,则会发生以下情况:
- 我的新窗口已创建,设置为键,并在前面排序。
- 前一个窗口已排序。
- “其他”窗口成为关键。
查看堆栈跟踪,我可以看到由于发送了一些通知,“其他”窗口正在成为关键。这不在我的应用程序中,所以必须是 Cocoa 的东西。鉴于我明确地说哪个窗口应该是关键窗口,为什么 Cocoa 会忽略它并将其更改为其他窗口?有没有更好的方法来做我想做的事?
如果所有窗口都在同一个屏幕上,则不会发生这种情况。