这是一个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中设置特定的单词范围,这不会导致这个?
任何帮助都会很棒!很多!
答案 0 :(得分: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];