У меня есть табличное представление. В cellForRowAtIndexPath у меня есть ячейка, и в этой ячейке есть UITextField. Я установил делегат текстового поля следующим образом: cell.textField.delegate = self;. Мне нужно вызвать свой API по третьему символу. Поэтому, когда пользователь вводит 3 символа в текстовое поле, вызывается API, следовательно, mustChangeCharactersInRange.
Код: Выделить всё
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length >= 2) {
NSString *substring = [NSString stringWithString:textField.text];
substring = [substring
stringByReplacingCharactersInRange:range withString:string];
[API CALLED WITH BLOCK WITH TEXTFIELD TEXT AS PARAMETER:substring];
}
return YES;
}
Проблема в том, что когда я набираю, например, «abc», метод mustChangeCharactersInRange вызывается в первый раз, а параметр — «abc». Через секунду снова вызывается метод mustChangeCharactersInRange, и в моем текстовом поле появляется еще один добавленный символ, который я не вводил, и всегда копируется последний символ. Итак, в этом примере он отправляет «abcc». Знаете, в чем проблема?
Подробнее здесь:
https://stackoverflow.com/questions/325 ... ires-twice