1

を使用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];
}
4

1 に答える 1