を使用NSMutableAttributedString
して文字列に色を付けますUITextField
が、ユーザーは文字列を切り取ったり、コピーしたり、削除したりできません。たとえば、次のコードを使用して、「blue red @green」と入力してから blue を削除するか、blue を切り取ろうとすると、カーソルがUITextfield
?の最後の文字に移動します。
助言がありますか?
- (void)colorText {
NSMutableAttributedString * string = [[NSMutableAttributedString alloc]initWithString:self.thing.text];
NSArray *words=[self.thing.text componentsSeparatedByString:@" "];
for (NSString *word in words) {
if([word isEqualToString:@""]) {continue;};
if ([word hasPrefix:@"@"]) {
NSRange range=[self.thing.text rangeOfString:word];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:range];
} else {
NSRange range=[self.thing.text rangeOfString:word];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:range];
}
}
[self.thing setAttributedText:string];
}