У меня есть окно, которое я хочу, чтобы иметь возможность делать полноэкранный режим без разрешения доступа к док-станции или панели меню.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];
}
Возможно, вы можете быть в виде меню или док-станции? –
Документы говорят, что наличие скрытых, скрытых скрытых док-станций и панели меню, а также автоматическое скрытие являются действительными параметрами, и я видел много других приложений, которые имеют такое поведение. Я уверен, что я просто что-то упустил, но не могу понять, что это может быть. –
10.10.3 работает до тех пор, пока вы не увидите cmd-tab в полноэкранном приложении. После этого Dock и меню появятся снова автоматически. Штопать! – Hedin