首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSToolbarItem选择不涵盖文本

NSToolbarItem选择不涵盖文本
EN

Stack Overflow用户
提问于 2014-05-16 16:07:43
回答 1查看 167关注 0票数 1

我有一个带有标准NSWindow的应用程序,它包含一个带有几个NSToolbarItemNSToolbar作为首选项。NSToolbarItem被设置为可选择的,并使用包含的“模板”作为其名称的一部分,以获得良好的系统梯度效果。

但是,当选择NSToolbarItem时,所选内容不会更改文本的背景。

每个NSToolbarItem标记为可选,我的NSToolbarDelegate只实现这两个方法:

代码语言:javascript
复制
-(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar{
    NSMutableSet *toolbarSet = [NSMutableSet set];
    for (NSDictionary *prefItem in _preferenceItems){
        [toolbarSet addObject:[prefItem objectForKey:@"toolbarIdentifier"]];
    }
    return [toolbarSet allObjects];
}

-(NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar{
    NSMutableSet *selectableSet = [NSMutableSet set];
    for (NSDictionary *prefItem in _preferenceItems){
        [selectableSet addObject:[prefItem objectForKey:@"toolbarIdentifier"]];
    }
    return [selectableSet allObjects];
}

下面是我所看到的;注意文本周围的灰色框:

与Safari的“首选项”窗口相反:

接口生成器中所有NSToolbarItem的配置:

NSToolbar本身:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 19:10:39

作为我的NSToolbarDelegate / NSWindowController设置的一部分,我设置:

代码语言:javascript
复制
[[[self window] contentView] setWantsLayer:YES];

评论这一行解决了这个问题。

在以下方面:

代码语言:javascript
复制
-(void)awakeFromNib{
     NSDictionary *zendeskItem = @{@"name" : @"Zendesk Accounts",
                                  @"toolbarIdentifier" : @"zendesk"};
     NSDictionary *toolItem = @{@"name" : @"Tools",
                                  @"toolbarIdentifier" : @"tools"};
     NSDictionary *supportItem = @{@"name" : @"Support",
                                  @"toolbarIdentifier" : @"support"};
     NSDictionary *healthItem = @{@"name" : @"Health",
                                  @"toolbarIdentifier" : @"health"};
     NSDictionary *aboutItem = @{@"name" : @"About",
                                 @"toolbarIdentifier" : @"about"};

     _preferenceItems = [NSArray arrayWithObjects:zendeskItem, toolItem, supportItem, healthItem, aboutItem, nil];

    [[self window] setContentSize:[_zendeskView frame].size];
    [[[self window] contentView] addSubview:_zendeskView];
    //[[[self window] contentView] setWantsLayer:YES];

    currentViewTag = 1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23699887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档