Iphone UITextField only integer

Implementing shouldChangeCharactersInRange method as below does not allow the user input non-numeric characters.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0) || [string isEqualToString:@""];
}

This returns YES if the string is numeric, NO otherwise. the [string isEqualToString@””] is to support the backspace key to delete.

I love this approach because it’s clean.

Leave a Comment