2015-12-21 84 views
3

我的应用程序有两个窗口(主窗口和视频窗口),两者都可以独立进入全屏模式。主窗口有一个按钮来切换视频窗口的可见性。当视频窗口可见,按键简单地发送关闭消息是这样的:如何以编程方式关闭全屏模式NSWindow?

[theVideoWindow close]; 

它完美地在视频窗口不是在全屏幕模式。

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

是否有任何最佳做法来以编程方式关闭全屏模式窗口,而不是先从全屏模式退出,然后在NSWindowDidExitFullScreenNotification通知处理程序中关闭它?

在此先感谢。


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

回答

3

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

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

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

@扫罗的斯威夫特4溶液:

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

if isFullscreen() { 
    view.window?.toggleFullScreen(nil) 
} 
相关问题