- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
 
 // This allows backspace
 if ([resultingString length] == 0) {
  return true;
 }
 double holder;
 NSScanner *scan = [NSScanner scannerWithString: resultingString];
 
 return [scan scanDouble: &holder] && [scan isAtEnd];
}
If you want an integer instead of a double, change line 10 from
double holder;to
NSInteger holder;and change line 13 from
return [scan scanDouble: &holder] && [scan isAtEnd];to
return [scan scanInteger: &holder] && [scan isAtEnd];
Remember, in order for this method to be called, you have to reference the delegate class in your header file and set the delegate property of the UITextField to self.
@interface MyViewController : UIViewController<UITextFieldDelegate> { }
self.myTextField.delegate = self;
Exactly what I was looking for!
ReplyDeleteWhere do you write the self.myTextField.delegate = self; ?
Seb,
ReplyDeleteYou can set the delegate in a number of places. I usually do it (void)viewDidLoad{}. Hope that helps!
tk
thnx a lot work superbly
ReplyDelete