2016-11-27 5 views
1

Я заметил проблему в macOS 10.12: Когда я создаю NSTableView с стилем «Sourcelist» Highlight, текстовые ячейки рисуют черный фон, будучи отредактирован, сделав текст черным на черном и фактически нечитаемым.Черный текстовый фон на основе NSTableView с использованием Sourcelist Highlight style (10.12)

Интересно, если кто-то другой столкнулся с этой проблемой и, если есть возможное обходное решение.

enter image description here

ответ

0

Я нашел обходной путь подклассов NSTextFieldCell и сделать его возвращать подкласс NSTextTextView в качестве редактора поля. Этот подкласс должен переопределить - drawsBackground, возвращающий NO. Установка этого свойства после инициализации кажется недостаточной.

@interface NonBackgroundDrawingTextView : NSTextView 

@end 


@implementation NonBackgroundDrawingTextView 

- (BOOL)drawsBackground { 
    return NO; 
} 

@end 

@interface CustomTextFieldCell : NSTextFieldCell 

@end 

@implementation CustomTextFieldCell 

- (NSTextView *)fieldEditorForView:(NSView *)controlView { 
    static NSMutableDictionary* FieldEditors = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     FieldEditors = [NSMutableDictionary dictionary]; 
    }); 
    if (FieldEditors[@(controlView.hash)]) { 
     return FieldEditors[@(controlView.hash)]; 
    } 
    NSTextView* textView = [[NonBackgroundDrawingTextView alloc] initWithFrame:NSZeroRect]; 
    [textView setFieldEditor:YES]; 
    [textView setFocusRingType:NSFocusRingTypeExterior]; 
    FieldEditors[@(controlView.hash)] = textView; 
    return textView; 
} 

@end 

 Смежные вопросы

  • Нет связанных вопросов^_^