UITextViewのキーワードを強調表示するために、StackOverflowでこのコードを見つけました
-(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 の後に何も入力しないと、何があってもすべてが赤く強調表示され続けます。キーワードの範囲を正しく読み取っていないとしか思えませんか?どうしたの?