除了toggleFullScreen(以及其他几个)之外,大多数NSWindow的东西都是阻塞的,这是异步的,更糟的是,它也会失败。这个,加上在全屏窗口上调用close()的事实是错误的[1],这让我想要在做任何其他事情之前等待窗口进入/退出全屏(例如,我想等待窗口)在调用close()之前退出全屏。
这样做的好方法是什么(没有轮询定时器,这将是明显的答案)?
[1]它没有退出全屏模式,让你盯着一个空的灰色屏幕,如果你在第一个窗口关闭后创建另一个窗口,它将设置全屏标志 - 这表明这个事实实际上是一个全球性的旗帜。
答案 0 :(得分:0)
虽然我不确定实际问题是什么,但我想我可以提供一些建议。
如果要防止在全屏和窗口模式之间关闭窗口,可以简单地检查NSWindow的委托方法。 NSWindowDelegate提供了-windowDidExitFullScreen:
和-windowWillExitFullScreen:
等方法,可以在窗口进入状态之间时通知您。最后,您可以使用-windowShouldClose:
阻止关闭窗口。
答案 1 :(得分:0)
开始进入全屏
windowDidEnterFullScreen
完成后调用
1b中。有一个保持状态的布尔值。 (_windowIsInFullscreen)。将其设置为NO之前,并将其设置为委托消息中的YES
1c上。等待:
while(!_windowIsInFullscreen) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:.5]];
NSLog(@"Polling...");
}
这就是模态的东西也是如此(恕我直言,这很糟糕;)异步规则 - 但这是个人偏好)