The following code changes "test" in the textView's string to red color but it also has the effect of moving the cursor to the end of the text block when textViewDidChange is called (Aka when any text editing is made which is very annoying).
How can I prevent the cursor moving when I setAttributedText in textViewDidChange?
- (void)textViewDidChange:(UITextView *)textView {
NSString* currentString = self.textView.text;
NSMutableAttributedString* string = [[NSMutableAttributedString alloc]initWithString:currentString];
NSArray *words=[currentString componentsSeparatedByString:@" "];
for (NSString *word in words) {
if ([word isEqualToString:@"test"]) {
// change color
NSRange range=[currentString rangeOfString:word];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];
}
}
// assign new color to textView's text
[self.textView setAttributedText:string];
}