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