NSToolbar отображается при входе в полноэкранный режим - PullRequest
5 голосов
/ 13 февраля 2012

Я разрабатываю приложение, в котором панель инструментов может быть показана / скрыта пользователем с помощью кнопки. Проблема заключается в следующем: Если пользователь решает скрыть панель инструментов, а затем входит в полноэкранный режим, отображается панель инструментов.

Пользовательский интерфейс был создан программно (т.е. не использует Interface Builder).

Это создание панели инструментов в делегате приложения:

mainToolbar = [[NSToolbar alloc] initWithIdentifier:MAIN_TOOLBAR];
[mainToolbar setAllowsUserCustomization:NO];
[mainToolbar setDisplayMode:NSToolbarDisplayModeIconOnly];
[mainToolbar setDelegate:self];
[window setToolbar: mainToolbar];

Это действия, выполняемые кнопками:

-(void)hideToolbar {
    editing = YES;
    [mainToolbar setVisible:NO];
}

-(void)showToolbar {
    editing = NO;
    [mainToolbar setVisible:YES];
}

Я пытался исправить это, используя методы делегата окна, но панель инструментов все еще отображается при входе в полноэкранный режим независимо от значения editing.

- (void)windowDidEnterFullScreen:(NSNotification *)notification {
  [mainToolbar setVisible:!editing];

}

- (void)windowDidExitFullScreen:(NSNotification *)notification {
 [mainToolbar setVisible:!editing];

}

Заранее большое спасибо!

1 Ответ

10 голосов
/ 16 апреля 2013

Я не смог найти способ сохранить скрытое / показанное состояние панели инструментов, когда окно переходит в полноэкранный режим, но вы можете настроить панель инструментов так, чтобы она всегда была скрыта в полноэкранном режиме и анимировалась при переходе пользователя кверхняя часть экрана.В своем делегате окна вы можете установить NSApplicationPresentationOptions для возврата NSApplicationPresentationAutoHideToolbar в качестве одного из параметров.Моя выглядит так:

    - (NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions
{
    return (NSApplicationPresentationFullScreen |       
            NSApplicationPresentationHideDock |         
            NSApplicationPresentationAutoHideMenuBar |
            NSApplicationPresentationAutoHideToolbar);
}

Вот соответствующая документация: https://developer.apple.com/library/mac/#documentation/General/Conceptual/MOSXAppProgrammingGuide/FullScreenApp/FullScreenApp.html

...