0

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

4

1 に答える 1

0

それは標準的な動作です。テキスト エディターでフォントを変更してから入力を開始すると、フォントが標準設定に戻った画像。それに対処するには、コードを作成する必要があります。各編集を検出し、テキストを再処理できます。潜在的な解決策は、処理中にこの状況を検出した場合、テキストの最後にスペース文字を (強調表示せずに) 挿入することです。次に、ユーザーがそのスペースを削除することを選択した場合、強調表示は続行されます。

于 2013-07-30T21:43:42.657 に答える