如何以编程方式关闭全屏模式NSWindow?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以编程方式关闭全屏模式NSWindow?相关的知识,希望对你有一定的参考价值。

我的应用程序有两个窗口(主视频和视频),两者都可以独立进入全屏模式。主窗口有一个按钮,用于切换视频窗口的可见性。当视频窗口可见时,按钮只会发送如下信息:

[theVideoWindow close];

当视频窗口不处于全屏模式时,它可以正常工作。

但是当视频窗口在全屏模式下运行时,窗口看起来像是被排序(关闭),但它仍然存在(就像一个不可见的窗口)并接受鼠标事件。用户无法与其他应用程序交互,因为隐藏窗口会占用所有鼠标事件而无法关闭它,因为标题栏和菜单已消失。

除了首先退出全屏模式然后在NSWindowDidExitFullScreenScreenNotification通知处理程序中关闭它之外,是否有任何最佳实践以编程方式关闭全屏模式窗口?

提前致谢。


这似乎是我的错。另一个开发人员,明确地发送orderFront:在NSWindowDidExitFullScreenNotification通知处理程序中,使窗口在退出全屏模式后可见,并使窗口仍处于活动状态。

答案

在我的应用程序上,我检查窗口是否在全屏幕上,然后我使用ToogleFullScreen方法

- (BOOL)isFullScreen {
     return ((self.window.styleMask & NSFullScreenWindowMask) == NSFullScreenWindowMask);
}

if([self isFullscreen]) {
     [self.window toggleFullScreen:nil];
}
另一答案

@Saul在Swift 4中的解决方案:

func isFullScreen() -> Bool {
    guard let window = view.window else { return false }
    return window.styleMask.contains(.fullScreen)
}

if isFullscreen() {
    view.window?.toggleFullScreen(nil)
}

以上是关于如何以编程方式关闭全屏模式NSWindow?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将窗口从全屏切换到正常模式?

如何以编程方式可视化 XML 模式? [关闭]

使用 Javascript 以编程方式将 Google Chrome 置于全屏模式?

如何以编程方式关闭在 Kiosk 模式下运行的 Chrome?

如何以编程方式关闭棉花糖设备中特定应用程序的打盹模式

如何以编程方式启用和禁用振动模式