替换部分 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 的属性文本的主要内容,如果未能解决你的问题,请参考以下文章

可变高度 UITextView

从UITextView创建PDF

Swift:在 UITextView 中使用占位符文本禁用空白/换行符文本的栏按钮

用属性文本替换文本并向其添加操作

iphone 始终在 UITextView 中隐藏一些文本

嵌入在 UITextView 中的三列表