我创建了一个适用于RTF文件的小文本编辑器。
该文件被读入用户可以编辑的UITextView
。 UITextView
适用于
目前,当选择一系列文字并按下Bold按钮时,我会执行以下操作:
NSRange selectedTextRange = _textView.selectedRange;
BOOL isBold = [self isBold:selectedTextRange];
if(selectedTextRange.length > 0) {
NSMutableAttributedString *str = [_textView.attributedText mutableCopy];
[str enumerateAttribute:NSFontAttributeName inRange:selectedTextRange options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
UIFont *newFont = [self boldOptionWithFont:(UIFont *)value setBold:!isBold];
if(newFont) {
[str removeAttribute:NSFontAttributeName range:range];
[str addAttribute:NSFontAttributeName value:newFont range:range];
}
}
}];
_textView.attributedText = str;
_textView.selectedRange = selectedTextRange;
}
最后,UITextView
上设置了属性文本。但是,对于大文件来说这很慢(超过200页的页面超过4秒)。
问题:有没有办法只更新UITextView
的归属文字的一部分?
注意:这个问题与未答复的问题有点相似:Delete a word of attributedtext on textview
答案 0 :(得分:1)
尝试拨打[_textview.textStorage replaceCharactersInRange:withAttributedString:]
。