我有一個窗口,我希望能夠在不允許訪問碼頭或菜單欄的情況下全屏顯示。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