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