Обнаружить обратное пространство в UITextField в пустом текстовом поле

Возможный дубликат:
Обнаружить обратное пространство в UITextField

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

Обнаружить обратное пространство в UITextField


person jacob    schedule 04.12.2010    source источник
comment
Не могли бы вы объяснить немного больше о том, чего вы пытаетесь достичь этим?   -  person Ryan    schedule 04.12.2010


Ответы (2)


Я обнаружил, что это невозможно.

Когда 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;
}

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

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

person Tom Irving    schedule 04.12.2010
comment
Я победил это, постоянно имея место в поле - как вы этого добились? Не могли бы вы предоставить образец кода? Что, если пользователь написал в текстовом поле букву a, а затем дважды нажал клавишу возврата? Когда вы вводите пробел в поле? Спасибо! - person Piotr; 24.09.2011
comment
Я не разрешаю пользователю использовать клавишу удаления, если в поле есть только пробел - см. Пример кода выше. - person Tom Irving; 24.09.2011
comment
Должен быть способ сделать это лучше. - person Adam Waite; 21.01.2013
comment
Вы также можете попробовать символ нулевой ширины, например \ u200B - person Tom Irving; 21.01.2013

:) просто для заголовка "Обнаружить обратное пространство", где я использую UIKeyboardTypeNumberPad.

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

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

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

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

person Jason Lee    schedule 26.12.2011