我一直在使用TextKit
和NSTextStorage
對象UITextView
嘗試獲取某些字以動態格式化。NSTextStorage addAttribute僅適用於指定範圍的字符
以下方法位於UITextView
的子類中,並在textDidChange
事件中執行。這樣做的效果在於,它確實能夠檢測何時輸入了「the」這個詞,並且它確實將它變成紅色,但是「the」之後的所有文字也是紅色的。目標僅僅是「the」是紅色的。
任何想法我做錯了什麼?
- (void)highlight {
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\bthe\\b" options:0 error:nil];
NSArray *matches = [regex matchesInString:[self text] options:0 range:NSMakeRange(0, [self.text length])];
for (NSTextCheckingResult *match in matches) {
[self.textStorage beginEditing];
[self.textStorage addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:match.range];
[self.textStorage endEditing];
}
}
'match.range'的值是否正確? –
是的,範圍已被證實是正確的。 –
嘗試將所有匹配項設置爲紅色後,將文本視圖的「typingAttributes」設置爲「正常」屬性(不管文本的屬性是否爲紅色)。 –