次のコードを使用して、属性付きの 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 が再描画されるのに少し時間がかかりますか? プロセスをスピードアップするために何かしますか? 正規表現でテキストを検索してみましたが、何も変わらないようでした。
ありがとう