您好
我知道ipad键盘不喜欢iphone可以设置“UIKeyboardTypeNumberPad”!!
但如果我想它只能输入并在文本字段中显示数字0到9
如何比较文本字段中的用户键是否为数字?
提前感谢。
迷你
答案 0 :(得分:9)
而不是比较显示后的数字,请在shouldChangeCharactersInRange
中执行请务必声明委托UITextFieldDelegate,以及我总是忘记的事情,确保textField本身的委托指向包含其中代码的类。
//---------------------------------------------------------------------------
- (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;
}
答案 1 :(得分:3)
看看this主题。它解决了我类似的问题。
答案 2 :(得分:1)
How to dismiss keyboard for UITextView with return key?怎么样?
这个想法是你每次用户点击一个键时都要检查,如果是一个数字就让它通过。否则忽略它。
让您的Controller支持UITextViewDelegate
协议并实施textView:shouldChangeTextInRange:replacementText:
方法。
答案 3 :(得分:0)
(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;
}