Как обнаружить нажатие кнопки "backspace" на UITextField на UIKeyboard?
Как я могу обнаружить нажатие кнопки возврата UIKeyboard
?
Спасибо
РЕДАКТИРОВАТЬ: есть ли делегат клавиатуры, который возвращает значение нажатой клавиши?
3 ответа
Если UITextField является пустым, метод делегата shouldChangeTextInRange не вызывается. Вы можете создать подкласс UITextField и переопределить этот метод:
-(void)deleteBackward;
{
[super deleteBackward];
NSLog(@"BackSpace Detected");
}
поскольку UITextField совместим с протоколом UITextInput, этот метод реализован, и вы можете переопределить его, чтобы определить, когда нажата клавиша возврата. Затем вы можете написать свой собственный метод протокола / делегата, чтобы предупредить ваш пользовательский делегат текстового поля, если обнаружен возврат.
Прежде всего ваш UIViewController
что ссылается на UITextField
должен соответствовать UITextFieldDelegate
protocol
, Затем установите свой класс как delegate
к UITextField
(например. [myTextField setDelegate:self]
). Затем в вашем классе вы добавляете следующее. Когда строка "" отправляется как replacementString
Вы знаете, что это забой.
(BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
if ([string isEqualToString:@""]) {
NSLog(@"Backspace");
}
return YES;
}
Временно я вставляю нулевой пробел на textFieldDidBeginEditing
textField.text = @"\u200B";
на backspace, он удаляет эти символы, но графически это то же самое!
Это хак, он работает, но он скрывает заполнитель текста... не хорошо...