我的应用程序有两个窗口(主视频和视频),两者都可以独立进入全屏模式。主窗口有一个按钮,用于切换视频窗口的可见性。当视频窗口可见时,按钮只会发送如下信息:
[theVideoWindow close];
当视频窗口未处于全屏模式时,它可以正常工作。
但是当视频窗口在全屏模式下运行时,窗口看起来像是被排序(关闭),但它仍然存在(就像一个不可见的窗口)并接受鼠标事件。用户无法与其他应用程序交互,因为隐藏窗口会占用所有鼠标事件而无法关闭它,因为标题栏和菜单已消失。
是否有任何最佳做法以编程方式关闭全屏模式窗口,而不是先退出全屏模式,然后在NSWindowDidExitFullScreenScreenNotification通知处理程序中将其关闭?
提前致谢。
这似乎是我的错误。另一个开发人员,在NSWindowDidExitFullScreenNotification通知处理程序中显式发送orderFront:使窗口在退出全屏模式后立即可见,并使窗口仍处于活动状态。
答案 0 :(得分:3)
在我的应用上,我检查窗口是否在全屏上,然后我使用ToogleFullScreen方法
- (BOOL)isFullScreen {
return ((self.window.styleMask & NSFullScreenWindowMask) == NSFullScreenWindowMask);
}
if([self isFullscreen]) {
[self.window toggleFullScreen:nil];
}
答案 1 :(得分:0)
@Swul在Swift 4中的解决方案:
func isFullScreen() -> Bool {
guard let window = view.window else { return false }
return window.styleMask.contains(.fullScreen)
}
if isFullscreen() {
view.window?.toggleFullScreen(nil)
}