2014-11-01 3 views
4

У меня есть окно, которое я хочу, чтобы иметь возможность делать полноэкранный режим без разрешения доступа к док-станции или панели меню.NSApplicationPresentationHideDock не имеет эффекта

Я поддерживаю полноэкранную поддержку, установив поведение коллекции окон на NSWindowCollectionBehaviorFullScreenPrimary. Я попытался установить поведение коллекции как в IB, так и непосредственно вызвав setCollectionBehavior:, и это не влияет на проблему.

Моего окно делегат также отвечает на window:willUseFullScreenPresentationOptions: возвращении варианты NSApplicationPresentationFullScreen | NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar

окно имеет кнопку полноэкранного режима, доступную в заголовке окна и перемещается в и из полноэкранного режима просто отлично, так что я знаю, что я имею установку полноэкранную поддержки правильно.

Строка меню ведет себя точно так же, как предполагается, на основе параметров презентации, которые я предоставляю.

док, как когда-либо будет другая история, она всегда действует, как если бы я прошел опцию автоматического скрытия и будет скользить в поле зрения, когда я переместить курсор мыши в нижней части экрана, независимо от того, какой вариант я обеспечиваю в window:willUseFullScreenPresentationOptions:

Это действительно странно, поскольку я получаю скрытую панель меню с док-станцией для автоматического скрытия, и если вы должны были вернуть эту эквивалентную комбинацию флагов (NSApplicationPresentationAutoHideDock | NSApplicationPresentationHideMenuBar) в, вы получите исключение, указав, что комбинация недействительна.

Я что-то упустил?

Update 1:

Пробовал это на OS X 10.8 и она работает так же, как показывают документы должным образом. В OS X 10.9 и OS X 10.10 он терпит неудачу каждый раз. Также попробовал проект кода Apple «FullScreenWindow», который определяет флаги так же, как и я, а также не позволяет скрыть док-станцию ​​10.9 и 10.10, работает отлично на 10.8.

Я думаю, что это может быть ошибка Apple, либо проблема с этой функцией, либо, если они устарели, это ошибка документации, поскольку она не указана нигде.

Я зарегистрировал его с Apple.

Update 2:

Найдено решение!

кажется, что вы должны не только предоставить параметры презентации Windows. Но похоже, что приложение имеет свои собственные параметры презентации, которые переопределяют параметры Windows.

Добавлено это моему делегату окна и все работает.

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

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

} 
+0

Возможно, вы можете быть в виде меню или док-станции? –

+0

Документы говорят, что наличие скрытых, скрытых скрытых док-станций и панели меню, а также автоматическое скрытие являются действительными параметрами, и я видел много других приложений, которые имеют такое поведение. Я уверен, что я просто что-то упустил, но не могу понять, что это может быть. –

+0

10.10.3 работает до тех пор, пока вы не увидите cmd-tab в полноэкранном приложении. После этого Dock и меню появятся снова автоматически. Штопать! – Hedin

ответ

1

Вот решение.

кажется, что вы должны не только предоставить параметры презентации Windows. Но похоже, что приложение имеет свои собственные параметры презентации, которые переопределяют параметры Windows.

Добавлено это моему делегату окна и все работает.

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

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

} 
+0

Я использую 10.10 и не получаю кнопку полного экрана в строке заголовка. Как вы это поняли? Я могу получить окно для увеличения до полноэкранного режима при запуске и переключения масштаба из меню Main Menu View, которое я добавил. Ваш дополнительный код предотвращает доступ к главному меню. BTW, ни iPhoto, ни Safari не имеют кнопки масштабирования, доступ к масштабируемым объектам также возможен из меню Main Menu View. –

Смежные вопросы