0

我在 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 this works
,然后我可以按下按钮,它会突出显示@Hello 位但是如果我在@Hello 之后没有输入任何内容,无论如何它都会继续突出显示所有红色。我只能假设它没有正确读取关键字的范围?这是怎么回事?

4

1 回答 1

0

这是标准行为。图片您在文本编辑器中更改了字体,然后开始输入,字体又回到了标准设置。您将需要编写代码来处理它。您可以检测每个编辑并重新处理文本。如果您在处理时检测到这种情况,一个潜在的解决方案是在文本末尾插入一个空格字符(不突出显示)。然后,如果用户选择删除该空间,突出显示将继续。

于 2013-07-30T21:43:42.657 回答