2015-08-20 3 views
1

У меня есть UITextView, в котором говорится: «Этот гамбургер ______», и я располагаю под ним UITextField. Я хочу, чтобы каждый символ, который вы вводили в UITextField, UITextView немедленно обновляется.Обновить строку UITextView из UITextField сразу

Прямо сейчас, я это реализовано

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
NSString *stringWithTasty = [TextThisBurgerIs.text stringByAppendingString:newString]; 

[TextThisBurgerIs setText:stringWithTasty]; 

return YES; 
} 

Когда я запустить приложение, и я хочу, чтобы ввести вкусны в UITextField, это то, что я получаю как UITextView:

UITextView: "This burger is t ta tas tast tasty" 
UITextField: "tasty" 

Он заменяет строку «This burger is_____» новой версией строки, которую я создаю. Я установил UITextField в качестве делегата

Halp.

+0

так, если я типа «Это ____» в UITextView, а затем, когда я типа в «Котенок» UITextField, вы буквально хотите сказать, в UITextView : «Это kk kit kitt kitt kitten»? как заикание всю дорогу домой? – Loxx

+0

ИЛИ, вы хотите, чтобы он просто сказал «Это котенок», когда пользователь закончил редактирование UITextField? Вам нужно уточнить. – Loxx

+0

Определенно не хотел заикаться. Мне нужно было сохранить оригинал в новой строке, а затем обновить UITextView до строки. – Jose

ответ

2

это простая ошибка :)

Проблема заключается в том, что вы добавления текста к уже существующей строки:

NSString *stringWithTasty = [TextThisBurgerIs.text stringByAppendingString:newString]; 

При нажатии «Т» вы получите «Это гамбургер т» ,

Далее, когда вы нажимаете «a», вы добавляете «ta» к строке, которая уже содержится в вашем текстовом представлении (которое «This burger is t»). Поэтому результат «Этот гамбургер t ta».

Что вам нужно сделать, это сохранить исходную строку «Это гамбургер», и вы должны иметь:

NSString *stringWithTasty = [originalString stringByAppendingString:newString]; 

где originalString это @ «Это гамбургер».

Или вы можете просто:

NSString *stringWithTasty = [@"This burger is" stringByAppendingString:newString];