2010-03-31 2 views
2

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

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

ответ

2

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

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

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

0

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; 
    } 
} 

Или что-то вроде что в любом случае ...

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

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

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