Хорошее правило для пользовательского интерфейса: «Будьте либеральны в том, что вы
принять и консервативный в том, что вы отправляете "*.
Вместо того, чтобы наказывать пользователя за ввод, который не соответствует формату, который требуется вашему приложению, примите все, что можно преобразовать в правильный формат. Если вам нужно целое число от одного до миллиона включительно, 0001 - это странный, но совершенно правильный ввод. Я предлагаю это решение:
// Only check the value when the user is _done_ editing.
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSInteger intVal = [textField.text integerValue];
// Check whether the input, whatever it is,
// can be changed into an acceptable value
if( (intVal <= 1000000) && (intVal >= 1) ){
// If so, display the format we want so the
// user learns for next time
textField.text = [[NSNumber numberWithInteger:intVal] stringValue];
return YES;
}
// Else show a small error message describing
// the problem and how to remedy it
return NO;
}
*: Первоначально сформулировано Джоном Постелем как «Принцип устойчивости» ; может быть более конкретное заявление об этом для пользовательского интерфейса, но я не могу сейчас вспомнить.