IPad - how to only type 0~9 on textfield?
Hello
I know ipad keyboard doesn't like iphone can set "UIKeyboardTypeNumberPad"!! But if I wanna it only can type and开发者_运维技巧 show number 0 to 9 on textfield. How to compare what user key in on textfield are numbers or not ??Thank in advance.
Mini
instead of comparing a figure after it is displayed, do it in the shouldChangeCharactersInRange
be sure to declare the delegate UITextFieldDelegate, and something i always forget, make sure the delegate of the textField itself is pointing at the class that has the code in it.
//---------------------------------------------------------------------------
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string length] == 0 && range.length > 0)
{
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
return NO;
}
NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
if ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0)return YES;
return NO;
}
Take a look at this thread. It solved my similar problem.
How about How to dismiss keyboard for UITextView with return key??
The idea is you check every time the user hits a key, and if it is a number let it through. Otherwise ignore it.
Make your Controller supports the UITextViewDelegate
protocol and implement the textView:shouldChangeTextInRange:replacementText:
method.
(BOOL) textField: (UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string {
NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterNoStyle];
NSString * newString = [NSString stringWithFormat:@"%@%@",textField.text,string];
NSNumber * number = [nf numberFromString:newString];
if (number) {
return YES;
} else
return NO;
}
精彩评论