2014-11-01 94 views
4

我有一个窗口,我希望能够在不允许访问码头或菜单栏的情况下全屏显示。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]; 

} 
+0

也许菜单栏或码头大部分可用? – 2014-11-01 23:04:02

+0

该文档说,既隐藏,码头隐藏和菜单栏自动隐藏,并有两个自动隐藏是有效的选项,我见过很多其他应用程序具有该行为。我确信我只是想念一些东西,但我无法弄清楚这可能是什么。 – 2014-11-01 23:08:55

+0

在10.10.3上,它会一直运行,直到您将cmd-tab变为全屏应用程序。之后,Dock和菜单栏开始再次自动出现。该死! – Hedin 2015-06-05 04:59:43

回答

1

下面是解决方案。

看来你不仅要提供Windows演示文稿选项。但它似乎应用程序有其自己的演示文稿选项,将覆盖Windows选项。

添加到我的窗口代表,一切正常。

- (void)windowWillEnterFullScreen:(NSNotification*)notification 
{ 
    [[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationHideMenuBar | NSApplicationPresentationHideDock]; 
} 

- (void)windowDidExitFullScreen:(NSNotification*)notification 
{ 
    [[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationDefault]; 

} 
+0

我使用10.10,并没有在标题栏中看到全屏按钮。你是怎么得到这个的?我可以让窗口在启动时缩放到全屏,并从添加的主菜单视图菜单项中切换缩放。您的其他代码会阻止访问主菜单。顺便说一句,iPhoto和Safari都没有缩放按钮,也可以通过主菜单视图menuItem访问缩放。 – 2014-12-17 16:32:24