Как сделать подсвеченные совпадения (NSRegularExpression)?

Я хочу, чтобы совпадения были синего цвета в TextView.

NSString *text = @"Except as contained in #wep this notice, the name of a copyright #ololo holder shall not be used in  #pewpewpew advertising or otherwise to #promote";

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#\\w*" options:0 error:NULL];
NSArray *matches = [regex matchesInString:text options:0 range:NSMakeRange(0, [text length])];
NSLog(@"count %d", matches.count);

for (NSTextCheckingResult *match in matches) {
    NSRange matchRange = [match range];
    NSString *match = [text substringWithRange:matchRange];
    NSLog(@"Matched string: %@", match);
}
self.myTextView.text = text;

2 ответа

Решение

Ты должен создать NSAttributedString а затем примените шрифт согласно диапазону и установите атрибут UITextView не простой текст.

Ваш код должен выглядеть как показано ниже.

NSMutableAttributedString *attrib = [[NSMutableAttributedString alloc]initWithString:text];

for (NSTextCheckingResult *match in matches) {
    NSRange matchRange = [match range];
    NSString *match = [text substringWithRange:matchRange];
    NSLog(@"Matched string: %@", match);
    // set your rgb color here which you want i added blue color.
    [attrib addAttribute:NSForegroundColorAttributeName
                   value:[UIColor blueColor]
                   range:matchRange];
}
// set attributed text not a normal text.
self.myTextView.attributedText = attrib;

Может быть, это поможет вам.

self.myTextView.attributedText = // your attributed string here
Другие вопросы по тегам