Мужчины, я не верю, что это будет для меня проблемой. Если я нажимаю клавишу на клавиатуре, делегат UITextField запускает функцию:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([string lenght]==0) NSLog("Backspace was pressed");
}
Но проблема в том, что когда текст пуст и я нажимаю клавишу возврата, вызывается эта функция IS NOT
. Есть ли способ обнаружить, что в этой ситуации была нажата клавиша Backspace?
Или мне придется отправить эту ошибку в Apple?
Пс. Мне это нужно, чтобы курсор перешел к предыдущему UITextFild (если у вас есть один символ и нажмите backspace, он работает)
2 ответа
Что ж, я не думаю, что это ошибка, потому что текстовое поле пустое и, следовательно, в диапазоне не были изменены символы, поэтому метод не запускается. Документация UITextFieldDelegate от Apple говорит:
Текстовое поле вызывает этот метод всякий раз, когда пользователь вводит новый символ в текстовое поле или удаляет существующий символ.
В TextField нет существующих символов, поэтому метод не запускается. Это не помогает ответить на вопрос, но это не ошибка в SDK.
Чтобы получить желаемое поведение, ответ на этот вопрос уже дан здесь: Могу ли я определить ключ удаления, даже если поле UITextField пусто?
На самом деле это не ошибка. Здесь методы делегата не улавливают событие, так как никаких изменений в значениях текстового поля нет.
Это может быть реализовано путем создания подкласса UITextField и добавления его в качестве настраиваемого класса желаемого текстового поля. Затем переопределите метод «deleteBackward». Этот метод перехватит все события возврата.
Код в Swift:
override func deleteBackward() {
super.deleteBackward()
// Enter your stuff here
}
Также убедитесь, что вы вызываете супер-метод, так как он выполняет основные функции события.
Похожие вопросы
Связанные вопросы
Новые вопросы
objective-c
Этот тег следует использовать только для вопросов, касающихся функций Objective-C или зависящих от кода на языке. Теги [cocoa] и [cocoa-touch] следует использовать, чтобы узнать о фреймворках или классах Apple. Используйте связанные теги [ios], [macos], [apple-watch] и [tvos] для проблем, характерных для этих платформ.