Ограничить размер UITextField - PullRequest
4 голосов
/ 01 августа 2009

Как я могу ограничить количество символов в UITextField?

Т.е. если я ограничу его до 10 символов, пользователь не сможет ввести более 10. Также я хочу запретить ему вводить некоторые специальные символы, такие как +, = и т. Д.

Как бы я это сделал?

Ответы [ 5 ]

10 голосов
/ 08 апреля 2011

Вот пример кода для ограничения размера UITextField:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  if ([[textField text] length] + [string length] - range.length > MAX_LENGTH) {
    return NO;
  } else {
    return YES; 
  }
}
7 голосов
/ 02 августа 2009

Вы можете заставить свой контроллер представления соответствовать UITextFieldDelegate protocol и реализовать textField:shouldChangeCharactersInRange:replacementString: - это вызывается всякий раз, когда пользователь вводит новый символ в текстовое поле или удаляет существующий символ.

Затем вы можете проверить правильность введенного пользователем символа, вернув NO для любых недопустимых символов (например, таких как +, = в вашем вопросе).

Пример этого есть в этом сообщении в блоге .

2 голосов
/ 17 ноября 2011

Это работает для меня.

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{   

    if([textField.text length]<=8){
    [tf resignFirstResponder];       
        return YES;
    }
    else
        return NO;
}
1 голос
/ 01 августа 2009

Если вы хотите активно запретить пользователю вводить символы, вам нужно установить делегат для UITextField для обработки событий, а затем посмотреть на уведомление textDidChange. Затем вы можете просматривать введенный текст каждый раз, когда он изменяется, и, если введены какие-либо нежелательные символы (или дополнительные, превышающие желаемый предел), вы можете удалить их.

Смотрите здесь для получения дополнительной информации: http://discussions.apple.com/thread.jspa?messageID=6971952

0 голосов
/ 19 ноября 2010

попробуйте использовать UIKeyboardTypeNamePhonePad для вашего UITextField. На нем только буквы и цифры:

textField.keyboardType = UIKeyboardTypeNamePhonePad;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...