Изменить цвет определенных подстрок в NSTextView

Я хочу изменить цвет определенного текста в NSTextView. Метод должен проверить это после события нажатия клавиши.

Например: слово void закончено, а строка void меняет цвет на синий. Как редактор кода.

Долго искал, но ничего не нашел. Мой код:

 NSRange range = [text rangeOfString:@"void"];
 NSString *substring = [[text substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
 //I think, here is the mistake.
 NSAttributedString *now = [NSAttributedString initWithString:substring];
 [now setTextColor:[[NSColor blueColor]]];

Я читал, что мне нужно использовать NSAttributedString, но я не знаю, как получить этот класс из строки.

Я новичок в программировании какао.

Спасибо за любую помощь!


person Chryb    schedule 16.03.2013    source источник
comment
+1 за вопрос по osx :)   -  person Anoop Vaidya    schedule 16.03.2013


Ответы (1)


Сделать можно так:

NSString *str = @"Hello. That is a test attributed string.";

//in place of NSMakeRange put your range

[self.textview setRichText:YES];
[self.textview setString:str];
[self.textview setTextColor:[NSColor redColor] range:NSMakeRange(3,5)];
person Anoop Vaidya    schedule 16.03.2013
comment
Как я могу установить это в NSTextView? - person Chryb; 16.03.2013
comment
[textView setRichText: ДА]; и попробуйте [textView setAttributedString: str]; - person Anoop Vaidya; 16.03.2013
comment
Его вызов «NSTextView» может не отвечать на «setAttributedString:». - person Chryb; 16.03.2013
comment
Ах, я исправил это с помощью: [[codrTextView textStorage] setAttributedString: str] ;. Но теперь у меня проблема с тем, что установлен весь цвет текста и фон. - person Chryb; 16.03.2013
comment
это довольно круто. Попробуйте мой ответ ... и скажите, хотите ли вы еще :) - person Anoop Vaidya; 16.03.2013
comment
Вот код: NSString * text = [codrTextView string]; NSRange range = [text rangeOfString: @void]; NSString * substring = [[текстовый substringFromIndex: NSMaxRange (диапазон)] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; [self.codrTextView setRichText: ДА]; [self.codrTextView setString: подстрока]; [self.codrTextView setTextColor: [NSColor redColor] диапазон: диапазон]; - person Chryb; 16.03.2013
comment
Ох, черт возьми, извини. Не могу создать новый вопрос ... Я вставил ваш код, но теперь, если я нажимаю кнопку, он удаляет весь текст. - person Chryb; 16.03.2013
comment
Ах, теперь я нахожу ошибку - person Chryb; 16.03.2013
comment
[self.codrTextView setString: text];, я добавил подстроку. Тонны благодарности за помощь. Сделал свой день: D - person Chryb; 16.03.2013
comment
Ооо, слава богу ... когда я проверил ваш код, я подумал, что вы пробовали ... В любом случае, желаю удачи в вашем будущем кодировании :) - person Anoop Vaidya; 16.03.2013