替换部分UITextView的属性文本

时间:2013-05-06 03:04:08

标签: ios objective-c syntax uitextview nsattributedstring

我正在尝试在我的应用中创建文本视图。它只是突出显示语法,并通过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行的全文。 有没有办法在不替换整个内容的情况下替换部分文本?

1 个答案:

答案 0 :(得分:2)

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...
});
祝你好运!