2012-02-01 8 views
5

Chcę zastąpić tekst w tekście UITextView w wybranym zakresie. To jest moje pytanie. Tu wspominam o tym, co zrobiłem? i co chcę zrobić ?. Mam UITextView i wprowadziłem poniższy tekst w widoku tekstowym.Jak zamienić tekst w UITextView na wybrany zakres?

Ask question here, Zapisałem zakres tekstu w tekście. Zakres tekstowy to {17, 0}. Biorę NSRange w delegata -(void) textViewDidChange:(UITextView *)textView.

Teraz chcę zastąpić tekst question z answer i chcę, aby zastąpić tekst here z them. The UITextView.text look like this, Zadaj odpowiedzieć them` po zastąpiły tekstów.

Jak mogę zamienić teksty na wybrane zakresy? Możesz mi pomóc? Z góry dziękuję.

Odpowiedz

4

Cóż ... nie jestem pewien zrozumieć poprawnie, co próbujesz robić, ale jeśli twoim celem jest, aby zmienić niektóre znaki wybrany zakres można wykonać następujące kroki:

Pobierz zawartość UITextView i umieścić go w NSString:

NSString *textViewContent = textView.text; 

zmienić znaki w przedziale chcesz:

NSString *newContent = [textViewContent stringByReplacingCharactersInRange:range withString:replacement]; 

Wymień starą zawartość z nową:

textView.text = newContent; 

W każdym razie, jeśli chcesz po prostu wymienić Zadaj pytanie tutaj z Zapytaj odpowiedzieć najszybszym rozwiązaniem jest po prostu:

textView.text = @"Ask answer them"; 
0

Dobrze rozwiązanie z góry głowę ..

NSArray *Dividedstring = [[self.TextView.text] componentsSeparatedByString:@" question here "]; // this will divide the string into two parts ..one before question here and second after question here. 
NSString * firstpart = [Dividedstring objectAtIndex:0]; 
NSString * secondpart = [Dividedstring objectAtIndex:0]; 

self.TextView.text = [NSString stringwithFormat:@"%@ answer here %@",firstpart,secondpart]; 
8

Od czasu iOS 7 istnieje tekstPrzenoszenie w textView, który dziedziczy po NSMutableAttributedString, dzięki czemu można korzystać z następujących metod:

[self.textView.textStorage replaceCharactersInRange:withString:]; 

lub

[self.textView.textStorage replaceCharactersInRange:withAttributedString:]; 
+0

Szukałem przez wiele odpowiedzi, ale to jest tylko jeden, który pomógł mi uniknąć TextView z autoscrolling do góry za każdym razem zmienić tekst w nim. Działa świetnie. – nshuman