除了toggleFullScreen (以及其他一些)之外,大多数NSWindow都是阻塞的,它是异步的,更糟糕的是,它也可能失败。这一点,再加上在全屏窗口上调用close()是buggy1的事实,这让我想在做任何其他事情之前等待窗口进入/退出全屏(例如.我想在调用close()之前等待窗口退出全屏。
有什么好方法可以做到这一点(不需要在计时器上轮询,这是显而易见的答案)?
1它不会退出全屏模式,让你盯着一个空的灰色屏幕,而且,如果你在第一个窗口关闭后创建了另一个窗口,它将设置全屏标志--这表明这实际上是一个隐藏在引擎盖下的全局标志。
发布于 2015-08-12 13:47:47
虽然我不确定实际的问题是什么,但我想我可以提供一些建议。
如果您想要防止在全屏和窗口模式之间关闭窗口,您可以简单地检查一下NSWindow的委托方法。NSWindowDelegate提供了-windowDidExitFullScreen:和-windowWillExitFullScreen:等方法,当窗口在不同状态之间切换时,这些方法应该会通知您。最后,您可以使用-windowShouldClose:阻止窗口的关闭。
发布于 2015-08-12 16:01:06
它是怎样的:
windowDidEnterFullScreen在完成时被调用
现在你想等了。
1b。有一个保持状态的布尔值。(_windowIsInFullscreen)。之前将其设置为NO,在委托消息中设置为YES
1c。等待:
while(!_windowIsInFullscreen) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:.5]];
NSLog(@"Polling...");
}这也是模态的工作方式(虽然这很糟糕;)异步规则--但这是个人喜好)
https://stackoverflow.com/questions/31956138
复制相似问题