如何禁止NSToolbar的“纯文本”模式?

时间:2014-06-24 16:28:43

标签: objective-c cocoa nsmenu nstoolbar

我的工具栏有以下菜单:

enter image description here

是否有任何简单的方法可以排除"纯文字"从这个菜单?

我知道它是NSToolbarDisplayModeLabelOnly,但没有找到地方说不要使用它。

1 个答案:

答案 0 :(得分:0)

我的团队找到了解决方案。 NSToolBar的简单类别。
此类别可用于向菜单添加自定义项目。

NSToolbar + ContextMenu.h

#import <Cocoa/Cocoa.h>
@interface NSToolbar (ContextMenu)
- (void) disableTextOnlyMode;
@end


NSToolbar + ContextMenu.m

#import <AppKit/NSToolbar.h>
#import "NSToolbar+ContextMenu.h"

@implementation NSToolbar (ContextMenu)
- (NSView*) __toolbarView {
    return (NSView*)[self valueForKey:@"_toolbarView"];
}
- (void) disableTextOnlyMode {
    NSView *toolbarView = [self __toolbarView];
    NSMenu *toolbarMenu = toolbarView.menu;
    for (NSMenuItem *item in [toolbarMenu.itemArray objectEnumerator]) {
        if (item.action == @selector(changeToolbarDisplayMode:) && item.tag == 3) {
            [toolbarMenu removeItem:item];
            break;
        }
    }
}
@end