Отключить NSTextField без изменения цвета многоцветного текста

Всякий раз, когда я отключаю NSTextField, текст теряет свой цвет и становится серым. Как я могу отключить текстовое поле и сохранить цвет текста? В моей конкретной ситуации некоторые слова окрашены в красный цвет. Я бы хотел, чтобы эти слова оставались красными, когда я отключаю.


person user2320861    schedule 02.05.2014    source источник
comment
Итак, вы используете строку с атрибутами, а не обычную строку?   -  person Droppy    schedule 02.05.2014
comment
Спасибо, Дроппи. Я бы описал текст как динамически окрашенный, пока я печатаю. Я перехватываю событие controlTextDidChange и окрашиваю слово в красный цвет, если оно неверно. В какой-то момент я закончил вводить текст, и это текстовое поле не следует повторно посещать. Поэтому я хочу отключить его, но он все равно должен быть виден с моей динамической окраской, чтобы я мог оглянуться назад и посмотреть, какие слова я ошибся.   -  person user2320861    schedule 02.05.2014
comment
Вам следует пересмотреть настройку другого стиля для отключенного текстового поля, так как это может сбить с толку пользователей.   -  person uchuugaka    schedule 03.05.2014


Ответы (2)


Для этого вам нужно создать подкласс NSTextField. См. это Тема CocoaBuilder:

- (void)setEnabled:(BOOL)flag
{
    [super setEnabled:flag];

    if (!flag) {
        [self setTextColor:[NSColor secondarySelectedControlColor]];
    } else {
        [self setTextColor:[NSColor controlTextColor]];
    }
}
person Droppy    schedule 02.05.2014
comment
Спасибо за ваш ответ! Я думаю, что мне нужно перефразировать свой вопрос, чтобы быть более точным в моей ситуации. Мой текст имеет несколько цветов ... например, некоторые слова красные, и я бы хотел, чтобы они и только они оставались красными, когда я отключаю. - person user2320861; 02.05.2014

Я обнаружил, что во время редактирования текста я мог устанавливать цвета и все такое, но проблема с потерей цвета текста возникала, даже когда я не отключал текстовое поле. Я забыл разрешить моему NSTextField разрешать форматированный текст. Теперь текстовое поле сохраняет все цвета, даже когда я setEditable:NO.

person user2320861    schedule 03.05.2014