4

次のコードを使用して、属性付きの UITextView の内容を検索しようとしています。

NSRange range = NSMakeRange(0, haystack.length);

range = [haystack rangeOfString:searchText options:NSCaseInsensitiveSearch range:range];

while (range.location != NSNotFound)
{
    [_attrString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(range.location, range.length)];

    range = NSMakeRange(range.location+range.length, haystack.length-(range.location+range.length));
    range = [haystack rangeOfString:searchText options:NSCaseInsensitiveSearch range:range locale:nil];
}

...

_textView.attributedText = _attrString;

_attrStringもちろんですNSMutableAttributedString

これは、大きなテキストで非常に遅いことを除けば、うまく機能します。156,000 文字を含む UITextView では、変更が表示されるまでに数秒かかります。ループの単一ステップを NSLog すると、コードが高速に実行されることがわかります。変更が UITextView に表示されるまで数秒かかります。

属性付きの UITextview が再描画されるのに少し時間がかかりますか? プロセスをスピードアップするために何かしますか? 正規表現でテキストを検索してみましたが、何も変わらないようでした。

ありがとう

4

1 に答える 1