Customizing the UITextField keyboardType only makes it easier for the user to enter the appropriate characters. Even on iPhone, users can enter other characters using the hardware keyboard or paste into a string.
Instead, execute UITextFieldDelegate -textField:shouldChangeCharactersInRange:replacementString: to verify user input. You probably also don't want to hardcode the numbers 0-9 and period. Users in some locales, for example, extract integers from decimal places of a comma:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *candidate = [[textField text] stringByReplacingCharactersInRange:range withString:string]; if (!candidate || [candidate length] < 1 || [candidate isEqualToString:@""]) { return YES; } NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:candidate]; if (!number || [number isEqualToNumber:[NSDecimalNumber notANumber]]) { return NO; } return YES; }
Alternatively, you can check when the user finishes typing in –textFieldShouldReturn: – textFieldShouldEndEditing: or – textFieldDidEndEditing: as desired.
lemnar
source share