Честно говоря, это одна из тех вещей, которые, как вы думаете, будут действительно простыми и понятными, и на самом деле это, к сожалению, нет.
Единственные способы повлиять на цвет в редакторе полей, это либо:
a) Установите цвет вашего текстового поля на нужный цвет перед вызовом метода selectWithFrame: ... в NSCell b) Измените цвет текста, помещенного в редактор полей после вызова selectWithFrame: ....
Так обычно:
a) подкласс NSTextFieldCell и установите цвет текста поля обратно к обычному значению по умолчанию до . Редактор поля настроен.
- (void)selectWithFrame:(NSRect)rect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)delegate start:(NSInteger)selStart length:(NSInteger)selLength
{
self.textColorWhenNotEditing = self.textColor;
self.textColor = NSColor.controlTextColor;
[super selectWithFrame:rect inView:controlView editor:textObj delegate:delegate start:selStart length:selLength];
}
- (void)endEditing:(NSText *)textObj
{
[super endEditing:textObj];
self.textColor = self.textColorWhenNotEditing;
}
b) Изменить редактор полей напрямую
- (void)selectWithFrame:(NSRect)rect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)delegate start:(NSInteger)selStart length:(NSInteger)selLength
{
[super selectWithFrame:rect inView:controlView editor:textObj delegate:delegate start:selStart length:selLength];
NSMutableDictionary * attribs = [((NSTextView *)textObj).typingAttributes mutableCopy];
attribs[NSForegroundColorAttributeName] = NSColor.controlTextColor;
[((NSTextView *)textObj).textStorage setAttributes:attribs range:NSMakeRange(0, textObj.string.length)];
((NSTextView *)textObj).typingAttributes = attribs;
}