나는 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