2014-11-01 211 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