我在StackOverflow上找到了一些代码来突出显示UITextView中的关键字
-(IBAction) highlight:(id) sender{
NSMutableAttributedString * string = [[NSMutableAttributedString alloc]initWithString:self.text.text];
NSArray *words=[self.text.text componentsSeparatedByString:@" "];
for (NSString *word in words) {
if ([word hasPrefix:@"@"]) {
NSRange range=[self.text.text rangeOfString:word];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];
}
}
[self.text setAttributedText:string];
}
由于某些原因,它没有得到正确的范围。我可以这样写出一句话:
@Hello这个有效
然后我可以按下按钮,它会突出显示@Hello位但是如果我在@Hello之后没有输入任何内容,它将继续突出显示所有红色,无论如何。我只能假设它没有正确读取关键字的范围?这是怎么回事?
答案 0 :(得分:0)
这是标准行为。图像您在文本编辑器中更改了字体,然后开始键入,字体又返回到标准设置。您将需要编码来处理它。您可以检测每个编辑并重新处理文本。如果在处理过程中检测到这种情况,可能的解决方案是在文本末尾插入空格字符(不突出显示)。然后,如果用户选择删除该空格,则突出显示将继续。