进入全屏模式时显示NSToolbar

Mar*_*ana 5 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];
Run Code Online (Sandbox Code Playgroud)

这些是按钮执行的操作:

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

-(void)showToolbar {
    editing = NO;
    [mainToolbar setVisible:YES];
}
Run Code Online (Sandbox Code Playgroud)

我试图使用窗口委托方法修复它,但仍然在进入全屏模式时显示工具栏,无论其值如何editing.

- (void)windowDidEnterFullScreen:(NSNotification *)notification {
  [mainToolbar setVisible:!editing];
Run Code Online (Sandbox Code Playgroud)

}

- (void)windowDidExitFullScreen:(NSNotification *)notification {
 [mainToolbar setVisible:!editing];
Run Code Online (Sandbox Code Playgroud)

}

提前谢谢了!

Jon*_*uys 10

当窗口全屏显示时,我无法找到保持工具栏的隐藏/显示状态的方法,但是您可以将工具栏设置为始终以全屏隐藏,并在用户转到顶部时设置动画.屏幕.在窗口委托中,您可以设置NSApplicationPresentationOptions以返回NSApplicationPresentationAutoHideToolbar作为其中一个选项.我看起来像这样:

    - (NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions
{
    return (NSApplicationPresentationFullScreen |       
            NSApplicationPresentationHideDock |         
            NSApplicationPresentationAutoHideMenuBar |
            NSApplicationPresentationAutoHideToolbar);
}
Run Code Online (Sandbox Code Playgroud)

以下是相关文档:https://developer.apple.com/library/mac/#documentation/General/Conceptual/MOSXAppProgrammingGuide/FullScreenApp/FullScreenApp.html