views:

367

answers:

1

Problem... I have a string of allowable characters "0123456789." How do I also allow the backspace from the keyboard... when I implement the code from below... the backspace key no longer works... How can I fix this?

*

  (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];

  return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);

}

+1  A: 
  • (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];

    if (range.length == 1){ return string; }else{ return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0); }

}

Ben Call
great code, except 'return string;' should be 'return YES;'
cannyboy
haha... i see... return string doesn't make sense... alas... code works perfectly regardless
Ben Call
I added if [string isEqualToString:@"\n"] return YES; to catch when the user presses done/return key.
Dara Kong