- (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