首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使NSWindow的toggleFullscreen同步(阻塞)

如何使NSWindow的toggleFullscreen同步(阻塞)
EN

Stack Overflow用户
提问于 2015-08-12 12:37:20
回答 2查看 555关注 0票数 0

除了toggleFullScreen (以及其他一些)之外,大多数NSWindow都是阻塞的,它是异步的,更糟糕的是,它也可能失败。这一点,再加上在全屏窗口上调用close()是buggy1的事实,这让我想在做任何其他事情之前等待窗口进入/退出全屏(例如.我想在调用close()之前等待窗口退出全屏。

有什么好方法可以做到这一点(不需要在计时器上轮询,这是显而易见的答案)?

1它不会退出全屏模式,让你盯着一个空的灰色屏幕,而且,如果你在第一个窗口关闭后创建了另一个窗口,它将设置全屏标志--这表明这实际上是一个隐藏在引擎盖下的全局标志。

EN

回答 2

Stack Overflow用户

发布于 2015-08-12 13:47:47

虽然我不确定实际的问题是什么,但我想我可以提供一些建议。

如果您想要防止在全屏和窗口模式之间关闭窗口,您可以简单地检查一下NSWindow的委托方法。NSWindowDelegate提供了-windowDidExitFullScreen:-windowWillExitFullScreen:等方法,当窗口在不同状态之间切换时,这些方法应该会通知您。最后,您可以使用-windowShouldClose:阻止窗口的关闭。

票数 0
EN

Stack Overflow用户

发布于 2015-08-12 16:01:06

它是怎样的:

  1. 开始进入全屏

  1. windowDidEnterFullScreen

完成时被调用

现在你想等了。

1b。有一个保持状态的布尔值。(_windowIsInFullscreen)。之前将其设置为NO,在委托消息中设置为YES

1c。等待:

代码语言:javascript
复制
 while(!_windowIsInFullscreen) {
                    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:.5]];
            NSLog(@"Polling...");
 }

这也是模态的工作方式(虽然这很糟糕;)异步规则--但这是个人喜好)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31956138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档