进入全屏模式时显示NSToolbar

时间:2012-02-13 15:55:21

标签: macos cocoa fullscreen nswindow nstoolbar

我正在开发一个应用程序,用户可以使用按钮显示/隐藏工具栏。问题如下:如果用户选择隐藏工具栏然后进入全屏模式,则会显示工具栏。

用户界面是以编程方式创建的(即不使用Interface Builder)。

这是app delegate中的工具栏创建:

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 个答案:

答案 0 :(得分:10)

当窗口全屏显示时,我无法找到保持工具栏隐藏/显示状态的方法,但您可以将工具栏设置为始终全屏隐藏,并在用户进入屏幕上方。在窗口委托中,您可以设置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