Как отключить цвет текста в NSTextView?

Я установил NSColorPanel, который я использую для изменения цвета фона окна. В окне также есть NSTextView с некоторым текстом. Проблема в том, что когда я меняю цвет фона, цвет текста меняется на тот же. Я пытался найти способы предотвратить это, но безуспешно.


person user3338161    schedule 16.06.2015    source источник
comment
Как вы пытались это предотвратить? Является ли ваш textview первым ответчиком? Согласно NSColorPanel документам на changeColor:, оно будет отправлено в firstResponder, поэтому ваше текстовое представление может перехватить это событие.   -  person Sega-Zero    schedule 17.06.2015
comment
@Sega-Zero Sega-Zero, да, текстовое представление отвечает первым.   -  person user3338161    schedule 17.06.2015
comment
Что ж, тогда попробуйте временно установить другой элемент управления как firstResponder или создать подкласс вашего текстового представления с помощью пустого метода changeColor:.   -  person Sega-Zero    schedule 17.06.2015
comment
вторая идея, которую вы сказали, звучит хорошо.   -  person user3338161    schedule 17.06.2015
comment
Я полагаю, если вы установите цель и действие цветной панели, она отправит свое действие выбранной цели, а не отправит действие по умолчанию -changeColor: первому ответившему.   -  person Joshua Nozzi    schedule 17.06.2015


Ответы (1)


Переопределите метод NSTextView changeColor: и в этом методе сохраните выход для backgeoundView и вместо изменения собственного цвета textView отправьте его в выход:

IBOutlet NSView *changeColorTarget;

...

- (IBAction)changeColor:(id)sender {
    if(self.changeColorTarget) {    
        [NSApp sendAction:@selector(changeColor:) target:self.changeColorTarget forEvent:nil];
    } else {
        [super changeColor:sender];    
    }
}

--> таким образом текстовое представление сохраняет свою первоначальную функциональность, за исключением случаев, когда вы устанавливаете розетку

person Daij-Djan    schedule 17.06.2015