我有一个窗口,我希望能够在不允许访问码头或菜单栏的情况下全屏显示。NSApplicationPresentationHideDock没有效果
我通过将窗口集合行为设置为NSWindowCollectionBehaviorFullScreenPrimary
来启用全屏支持。我已经尝试在IB中设置收集行为,并通过直接调用setCollectionBehavior:
来设置收集行为,并且它对此问题没有影响。
我的窗口代表也响应window:willUseFullScreenPresentationOptions:
返回选项NSApplicationPresentationFullScreen | NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar
该窗口的标题栏,并在进出全屏模式就好移动提供的全屏按钮,所以我知道我必须设置全屏支持正确。
菜单栏的行为完全像它应该基于我提供的演示文稿选项一样。
码头怎么过的是一个不同的故事,它总是好像我通过了自动隐藏选项,当我把鼠标移动到屏幕的底部,无论我在window:willUseFullScreenPresentationOptions:
这真的很奇怪,因为我得到一个带有自动隐藏底座的隐藏菜单栏,并且如果您要在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 bug,或者是该功能的问题,或者如果他们弃用了该功能,那么它就是一个文档错误,因为它不会在任何地方显示出来。
我已经用Apple记录了它。
更新2:
找到了解决办法!
看来你不仅要提供Windows演示文稿选项。但它似乎应用程序有其自己的演示文稿选项,将覆盖Windows选项。
添加到我的窗口代表,一切正常。
- (void)windowWillEnterFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationHideMenuBar | NSApplicationPresentationHideDock];
}
- (void)windowDidExitFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationDefault];
}
也许菜单栏或码头大部分可用? – 2014-11-01 23:04:02
该文档说,既隐藏,码头隐藏和菜单栏自动隐藏,并有两个自动隐藏是有效的选项,我见过很多其他应用程序具有该行为。我确信我只是想念一些东西,但我无法弄清楚这可能是什么。 – 2014-11-01 23:08:55
在10.10.3上,它会一直运行,直到您将cmd-tab变为全屏应用程序。之后,Dock和菜单栏开始再次自动出现。该死! – Hedin 2015-06-05 04:59:43