我有一个窗口,我希望能够在不允许访问扩展坞或菜单栏的情况下全屏显示。
我通过将窗口集合行为设置为NSWindowCollectionBehaviorFullScreenPrimary
来启用全屏支持。我已尝试在IB中设置收集行为并直接调用setCollectionBehavior:
,但它对此问题没有影响。
我的窗口委托也会回复window:willUseFullScreenPresentationOptions:
返回选项NSApplicationPresentationFullScreen | NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar
窗口的标题栏中有全屏按钮,可以进出全屏模式,所以我知道我已经正确设置了全屏支持。
菜单栏的行为完全符合我提供的演示选项。
Dock如何是一个不同的故事,它总是表现得好像我通过了自动隐藏选项,当我将鼠标移动到屏幕底部时,无论我在{{1 }}
我真的很奇怪,因为我得到一个带有自动隐藏停靠栏的隐藏菜单栏,如果你要在window:willUseFullScreenPresentationOptions:
中返回这个等效的标志组合(NSApplicationPresentationAutoHideDock | NSApplicationPresentationHideMenuBar
),你会得到一个例外,说明组合无效。
我错过了什么吗?
更新1:
在OS X 10.8上试过这个,它就像文档指出的那样工作。在OS X 10.9和OS X 10.10上,它每次都会失败。还尝试了Apple的示例代码项目“FullScreenWindow”,它像我一样指定标志,它也无法在10.9和10.10上隐藏停靠,在10.8上完美运行。
我认为这可能是一个Apple漏洞,或者是该功能的问题,或者,如果他们弃用了该功能,那么它就是文档错误,因为它没有在任何地方显示。
我已经用Apple登录了它。
更新2:
找到了解决方案!
似乎你不仅要提供windows演示选项。但似乎应用程序有自己的演示选项,将覆盖Windows选项。
将此添加到我的窗口委托中,一切正常。
window:willUseFullScreenPresentationOptions:
答案 0 :(得分:2)
这是解决方案。
似乎你不仅要提供windows演示选项。但似乎应用程序有自己的演示选项,将覆盖Windows选项。
将此添加到我的窗口委托中,一切正常。
- (void)windowWillEnterFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationHideMenuBar | NSApplicationPresentationHideDock];
}
- (void)windowDidExitFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationDefault];
}