2014-05-16 4 views
1

이 포함 된 표준 NSWindow의 응용 프로그램을 가지고 있으며, 일부는 NSToolbarItem을 기본 설정 항목으로 사용합니다. NSToolbarItem을 선택 가능으로 설정하고 포함 된 "템플릿"을 이름의 일부로 사용하여 멋진 시스템 그래디언트 효과를 얻으십시오.NSToolbarItem 선택에 텍스트가 포함되지 않음

그러나 NSToolbarItem을 선택하면 텍스트 배경이 선택되지 않습니다.

NSToolbarItem은 선택 가능한 표시, 내 NSToolbarDelegate는이 두 가지 방법으로 구현된다

여기
-(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]; 
} 

은 제가 보는 무엇을;

ib

: 인터페이스 빌더 내 NSToolbarItem의 모든의

safari

구성 : Safari의 환경 설정 창 반대로

behavior

: 텍스트 주위의 회색 상자를 발견

그리고 NSToolbar 자체 : 내가 설정 내 NSToolbarDelegate/NSWindowController의 설정의 일환으로

toolbar

+0

흠이 나에게 벌레처럼 보인다. 레이더에 파일 받았어? –

+0

도구 모음 항목이 변경되면 알림 등록을 시도하고 선택한 도구 모음 항목의보기에 수동으로'-setNeedsDisplay :'를 보낼 수 있습니다. –

+0

아이콘에 대한 링크를 제공해 주시겠습니까? 아이콘은 PNG 또는 PDF 파일입니까? – Lukas

답변

0

:이 줄을 언급

[[[self window] contentView] setWantsLayer:YES]; 

밖으로 문제가 해결. 문맥에서

:

-(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; 
}