Как я могу ограничить количество символов в UITextField?
Т.е. если я ограничу его до 10 символов, пользователь не сможет ввести более 10. Также я хочу запретить ему вводить некоторые специальные символы, такие как +, = и т. Д.
Как бы я это сделал?
Вот пример кода для ограничения размера 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; } }
Вы можете заставить свой контроллер представления соответствовать UITextFieldDelegate protocol и реализовать textField:shouldChangeCharactersInRange:replacementString: - это вызывается всякий раз, когда пользователь вводит новый символ в текстовое поле или удаляет существующий символ.
UITextFieldDelegate protocol
textField:shouldChangeCharactersInRange:replacementString:
Затем вы можете проверить правильность введенного пользователем символа, вернув NO для любых недопустимых символов (например, таких как +, = в вашем вопросе).
NO
Пример этого есть в этом сообщении в блоге .
Это работает для меня.
-(BOOL)textFieldShouldReturn:(UITextField *)textField { if([textField.text length]<=8){ [tf resignFirstResponder]; return YES; } else return NO; }
Если вы хотите активно запретить пользователю вводить символы, вам нужно установить делегат для UITextField для обработки событий, а затем посмотреть на уведомление textDidChange. Затем вы можете просматривать введенный текст каждый раз, когда он изменяется, и, если введены какие-либо нежелательные символы (или дополнительные, превышающие желаемый предел), вы можете удалить их.
Смотрите здесь для получения дополнительной информации: http://discussions.apple.com/thread.jspa?messageID=6971952
попробуйте использовать UIKeyboardTypeNamePhonePad для вашего UITextField. На нем только буквы и цифры:
textField.keyboardType = UIKeyboardTypeNamePhonePad;