1

これはUITextViewで、長い章を置きます(本のようにしたいです)。単語を2秒以上押すと(ここで長いジェスチャーを設定します)、単語がハイライトされます(次のコードは単語をうまくハイライトできますが、排除する必要があるいくつかの副作用も引き起こします)、ここに話があります:

コードは次のようになります。

   NSMutableAttributedString *attrStr = [self.contentTextView.attributedText mutableCopy];
   [attrStr addAttribute:NSBackgroundColorAttributeName value:[UIColor grayColor] range: _wordToSearchRange ];
   self.contentTextView.attributedText = attrStr;

これまでのところ、コードをデバッグし、最終的にこの行をターゲットにしました:

   self.contentTextView.attributedText = attrStr; 

これにより、textView のスクロールが一番上に移動します (現在の単語の場所に留まらない)。この操作は、textView を更新してまったく新しいコンテンツを設定するのと似ているため、合理的です。しかし、これを引き起こさない特定の単語範囲を textView に設定する他の方法はありますか?

どんな助けでも素晴らしいでしょう!ありがとう!

4

1 に答える 1

0

既存のテキストを編集しているので、すべてを置き換えるべきではありません。属性辞書を作成し、それを属性付きテキストに追加する必要があります。

NSMutableDictionary* attributes; //set the wanted attributes
NSRange range; //set the right range

[_contentTextView.textStorage beginEditing];
[_contentTextView.textStorage addAttributes:attributes range:range];
[_contentTextView.textStorage endEditing];
于 2015-08-05T06:12:12.570 に答える