2010-12-04 3 views
3

Можно создать дубликат:
Detect backspace in UITextFieldОбнаружение забой в UITextField на пустом текстовом поле

Я пытаюсь обнаружить ключ envent забоя на моем UITextField, которая пуста. Я видел это, но не мог понять. Любой сложный ответ или фрагмент кода будет полезным

Detect backspace in UITextField

+0

Можете ли вы объяснить немного больше о том, что вы пытаетесь сделать, выполнив это? – Ryan 2010-12-04 02:24:58

ответ

3

Я нашел это не возможно.

Когда UITextField пуст, следующий метод делегата не вызывается.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

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

if ([string isEqualToString:@""] && [textField.text isEqualToString:@" "]){ 
    // Backspace called on 'empty' field. 
    return NO; 
} 

Визуально, это так хорошо, как поле порожняком, и это обходной путь к методу делегата не вызывается на пустом поле.

Надеюсь, что это поможет.

+0

«Я победил это, постоянно имея пространство в поле» - как вы это достигли? Не могли бы вы предоставить пример кода? Что, если пользователь написал в текстовом поле букву «a», а затем дважды нажмите клавишу «Назад»? Когда вы вводите символ пространства в поле? Благодаря! – Piotr 2011-09-23 20:46:33

0

:) только для названия «Detect backspace», где я использую UIKeyboardTypeNumberPad.

Я также встретить один и тот же вопрос сегодня, и следующий мой код, чтобы найти его:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSLog([NSString stringWithFormat:@"%d", [string length]]); 
} 

Потому что с UIKeyboardTypeNumberPad, пользователь может ввести только номер или забой, поэтому, когда длина строки равна 0, он должен быть обратным.

Надеюсь, что это поможет.

Смежные вопросы