我注意到macOS 10.12下的一个问题:当我使用" Sourcelist"创建NSTableView时突出显示样式,Text-Cells在编辑时绘制黑色背景,使文本黑色为黑色,实际上不可读。
我想知道是否有其他人遇到此问题以及是否有可能的解决方法。
答案 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