Устранить ошибку в UITextField: когда он пуст, нажатие на клавишу возврата не запускает правильную функцию - PullRequest
0 голосов
/ 26 августа 2011

Мужчины, я не верю, что это будет проблемой для меня. Если я нажимаю клавишу на клавиатуре, делегат UITextField вызывает функцию:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
       if ([string lenght]==0) NSLog("Backspace was pressed");
 }

Но проблема в том, что когда текст пуст и я нажимаю клавишу Backspace, вызывается эта функция IS NOT. Есть ли способ обнаружить нажатие на клавишу возврата в этой ситуации?

Или мне придется отправить эту ошибку в Apple?

Ps. Мне нужно это для курсора перейти к предыдущему UITextFild (если есть один символ и нажмите клавишу Backspace, он работает)

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Ну, я не думаю, что это ошибка, потому что текстовое поле пустое и, следовательно, в диапазоне не было изменено ни одного символа, поэтому метод не запускается.Документация UITextFieldDelegate от Apple гласит:

Текстовое поле вызывает этот метод всякий раз, когда пользователь вводит новый символ в текстовое поле или удаляет существующий символ.

В TextField нет существующих символов, поэтому метод не запускается.Это не помогает ответить на вопрос, но это не ошибка в SDK

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

0 голосов
/ 29 июня 2016

На самом деле это не ошибка. Здесь методы делегата не перехватывают событие, так как нет изменений в любых значениях текстового поля.

Это можно реализовать, создав подкласс UITextField и добавив его в качестве пользовательского класса нужного текстового поля. Затем переопределите метод "deleteBackward" Этот метод будет перехватывать все события возврата.

Код в Swift:

override func deleteBackward() {
        super.deleteBackward()
        // Enter your stuff here
    }

Также убедитесь, что вы тоже вызываете супер метод, так как он выполняет основные функции события.

...