2

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

4

1 回答 1

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...
});

祝你好运!

于 2013-05-06T03:23:50.893 回答