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

标签 macos cocoa fullscreen nswindow appkit

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

[theVideoWindow close];

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

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

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

提前致谢。

<小时/>

这似乎是我的错误。另一个开发人员在 NSWindowDidExitFullScreenNotification 通知处理程序中显式发送 orderFront: ,以使窗口在退出全屏模式后立即可见,并且使窗口仍然处于事件状态。

最佳答案

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

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

if([self isFullscreen]) {
     [self.window toggleFullScreen:nil];
}

关于macos - 如何以编程方式关闭全屏模式 NSWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34403657/

相关文章:

macos - 撤消/重做菜单项不适用于基于文档的应用程序 OSX 10.7

objective-c - 获取音乐播放的音频级别

ios - webkit 在 ipad/iphone 上是否全屏?

android - 在约束布局中添加 View 并以编程方式将它们设置为全屏

cocoa - Lion全屏菜单栏不向下滑动

macos - 使用 Delphi Firemonkey 应用程序让 firebird 在 OSX 下工作

objective-c - 标准(32/64 位通用)、WebKit、Flash 插件和 Leopard

macos - SpriteKit Node.intersectsNode() 方法在奇怪的情况下不检测交叉点

cocoa - 确定 Unicode 字符是否可见?

jquery - 带有全屏模式的fancybox iframe弹出窗口中的youtube vudeos