удалить последний символ UITextField - PullRequest
2 голосов
/ 31 марта 2010

У меня есть UITextField, и я хотел бы, чтобы при каждом нажатии на символ первый символ удалялся.Так что у меня просто один символ в моем textField каждый раз.Более того, я хотел бы, чтобы он отображал каждое нажатие в журнале консоли.

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 31 марта 2010

Вам необходимо реализовать метод shouldChangeCharactersInRange в делегате текстового поля:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:
                  (NSRange)range replacementString:(NSString *)string{
    textField.text = @"";
    return YES;
}

Возможно, вам потребуется проверить диапазон и строковые значения, чтобы охватить все возможные случаи (например, действия копирования / вставки). Этот код просто устанавливает значение текстового поля в последний набранный символ.

0 голосов
/ 10 июня 2011
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if (textField.text.length > 8) {
        return  NO;
    }  
    return YES;

}
0 голосов
/ 31 марта 2010

UITextField наследуется от UIControl, поэтому вы можете использовать механизм целевого действия, являющийся частью класса UIControl:

[textField addTarget:self action:@selector(updateTextField) forControlEvents:UIControlEventValueChanged];

В методе действия вы можете заменить текст UITextField только последним символом и зарегистрировать этот символ в консоли. Обратите внимание, что поскольку изменение текста UITextField снова приведет к тому, что сообщение «updateTextField» будет отправлено во второй раз цели, вам потребуется какой-то механизм для определения, обновлять или нет:

- (void)updateTextField {
    if(updateTextField == YES) {
        updateTextField = NO;
        NSString *lastChar = [textField.text substringFromIndex:[textField.text length]];
        [textField setText:lastChar];
        NSLog(@"%@", lastChar);
    } else {
        updateTextField = YES;
    }
}

Или как-то так ...

...