替换部分 UITextView 的属性文本
Posted
技术标签:
【中文标题】替换部分 UITextView 的属性文本【英文标题】:Replace part of UITextView's attributed text 【发布时间】:2013-05-06 03:04:07 【问题描述】:我正在尝试在我的应用中创建一个文本视图。它只是突出显示语法并通过 AttributedText 在 UITextView 中显示突出显示的文本。代码如下:
NSMutableString *ms = [[NSMutableString alloc] initWithString:self.text];
[ms replaceCharactersInRange:range withString:text];
self.attributedText = [syntaxHighlighter highlight:ms inRange:[self visibleRangeOfText]];
[self setSelectedRange:NSMakeRange(range.location + text.length, 0)];
问题在于大文本,它必须替换第 3 行中的整个文本。 有没有办法只替换部分文本而不替换整个内容?
【问题讨论】:
这似乎是相关的:***.com/questions/12543468/… 【参考方案1】:UITextView 实现UITextInput
协议。
如果要替换部分文本而不替换整个内容,可以使用方法:
- (void)replaceRange:(UITextRange *)range withText:(NSString *)text;
但在某些特殊情况下(从其他类调用时),此方法无效。我不知道为什么,所以我用了:
double delayInSeconds = 0.2;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void)
//call method to change text of textView here...
);
祝你好运!
【讨论】:
目标是更改attributedText
,而不是text
。
@rmaddy 是对的。这有助于替换纯文本,但它会摆脱格式!以上是关于替换部分 UITextView 的属性文本的主要内容,如果未能解决你的问题,请参考以下文章