Bra*_*d S 6 macos cocoa objective-c nswindow
我有一个窗口,我希望能够全屏,而不允许访问Dock或菜单栏.
我通过设置窗口集合行为来启用全屏支持NSWindowCollectionBehaviorFullScreenPrimary.我已尝试在IB中设置收集行为并setCollectionBehavior:直接调用,但它对问题没有影响.
我的窗口委托也响应window:willUseFullScreenPresentationOptions:返回选项NSApplicationPresentationFullScreen | NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar
该窗口在标题栏中提供了全屏按钮,可以移入和移出全屏模式,所以我知道我已经正确设置了全屏支持.
菜单栏的行为完全符合我提供的演示选项.
这个码头是一个不同的故事,它总是表现得好像我通过了自动隐藏选项,当我将鼠标移动到屏幕底部时无论我提供什么选项都会滑入视图 window:willUseFullScreenPresentationOptions:
这真的很奇怪,因为我得到一个带有自动隐藏扩展坞的隐藏菜单栏,如果你要返回这个等效的flags(NSApplicationPresentationAutoHideDock | NSApplicationPresentationHideMenuBar)组合,window:willUseFullScreenPresentationOptions:你会得到一个异常,说该组合无效.
我错过了什么吗?
更新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选项.
添加到我的窗口委托,一切正常.
- (void)windowWillEnterFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationHideMenuBar | NSApplicationPresentationHideDock];
}
- (void)windowDidExitFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationDefault];
}
Run Code Online (Sandbox Code Playgroud)
这是解决方案。
看来您不仅必须提供 Windows 演示选项。但应用程序似乎有自己的演示选项,将覆盖窗口选项。
将其添加到我的窗口委托中,一切正常。
- (void)windowWillEnterFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationHideMenuBar | NSApplicationPresentationHideDock];
}
- (void)windowDidExitFullScreen:(NSNotification*)notification
{
[[NSApplication sharedApplication] setPresentationOptions:NSApplicationPresentationDefault];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |