Вы можете реализовать метод textField:shouldChangeCharactersInRange:replacementString:
для делегата вашего текстового поля, отклоняя любые символы, которые недопустимы для вашего текстового поля. Дополнительную информацию смотрите в справочнике UITextFieldDelegate .
Например, если вы хотите разрешить ввод только десятичных чисел, вы можете использовать:
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);
}
Это на самом деле не выдает сообщение об ошибке, если ввод неправильный; вместо этого он предотвратит ввод неправильных символов.
Если вы хотите, чтобы пользователь мог вводить недопустимые символы, а они выдают ошибку, вы можете реализовать это в методе textFieldShouldEndEditing:
вашего делегата.