Я использую код ниже, чтобы попытаться иметь textField2
текстовое содержание обновляется для соответствия textField1
каждый раз, когда пользователь вводит textField1
.
- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {
if (theTextField == textField1){
[textField2 setText:[textField1 text]];
}
}
Однако вывод, который я наблюдаю, является этим...
textField2 равняется "12", когда textField1 равняется "123"
textField2 равняется "123", когда textField1 "1234"
... когда то, что я хочу:
textField2 равняется "123", когда textField1 равняется "123"
textField2 "1234", когда textField1 "1234"
Что я делаю неправильно?
-shouldChangeCharactersInRange
вызывается до того, как текстовое поле действительно изменит свой текст, поэтому вы получаете старое текстовое значение. Чтобы получить текст после обновления, используйте:
[textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]];
Вместо использования UITextFieldDelegate попробуйте использовать «Редактирование изменено. " событие UITextField.
Это тот код, который вам нужен,
if ([textField isEqual:self.textField1])
textField2.text = [textField1.text stringByReplacingCharactersInRange:range withString:string];