iPad - 如何在文本字段中仅键入0~9?

时间:2011-05-09 02:27:39

标签: xcode ipad uitextfield

您好
我知道ipad键盘不喜欢iphone可以设置“UIKeyboardTypeNumberPad”!!
但如果我想它只能输入并在文本字段中显示数字0到9 如何比较文本字段中的用户键是否为数字?

提前感谢。

迷你

4 个答案:

答案 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;
}