2013-05-06 83 views
2

我試圖在我的應用程序中創建文本視圖。它只是突出顯示語法並通過AttributedText在UITextView中顯示突出顯示的文本。這裏是代碼:替換部分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)]; 

問題是對於大文本,它必須替換第三行中的整個文本。 有沒有辦法在不替換整個內容的情況下替換部分文本?

+0

這看起來是相關的:http://stackoverflow.com/questions/12543468/uitextview-attributetext-and-syntax-highlighting?rq=1 – rmaddy 2013-05-06 03:09:15

回答

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

祝你好運!

+3

目標是改變'屬性文字',而不是'文本' 。 – rmaddy 2013-05-06 03:26:17

+0

@rmaddy是對的。這對替換純文本很有幫助,但它將消除格式化! – 2013-05-06 13:41:27