带有Sourcelist Highlight风格的基于单元格的NSTableView的黑色文本背景(10.12)

时间:2016-11-27 18:04:27

标签: cocoa nstableview appkit

我注意到macOS 10.12下的一个问题:当我使用" Sourcelist"创建NSTableView时突出显示样式,Text-Cells在编辑时绘制黑色背景,使文本黑色为黑色,实际上不可读。

我想知道是否有其他人遇到此问题以及是否有可能的解决方法。

enter image description here

1 个答案:

答案 0 :(得分:0)

我通过继承NSTextFieldCell找到了一种解决方法,并使其返回NSTextTextView的子类作为其字段编辑器。 该子类需要覆盖返回NO的- drawsBackground。 初始化后设置此属性似乎不够。

@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