Iphone UITextField应该只有正数

Iphone UITextField应该只有正数,iphone,uitextfield,Iphone,Uitextfield,我需要验证UITextField。我只希望在其中输入正整数。如何实现这一点?我设置了一个从UITextFields文本属性中检索数字的程序。然后从数字中获取一个intValue,并检查它是否>=0 更新: NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setLocale:[NSLocale currentLocale]]; NSNumber *number = [formatter nu

我需要验证
UITextField
。我只希望在其中输入正整数。如何实现这一点?

我设置了一个从UITextFields文本属性中检索数字的程序。然后从数字中获取一个intValue,并检查它是否>=0

更新:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

[formatter setLocale:[NSLocale currentLocale]];

NSNumber *number = [formatter numberFromString:[textField text]];

[formatter release];

这会让你走的。我现在不在我的开发机器上,所以我不能测试运行它,也许你需要多做一两行设置。有关可用选项,请参阅参考库(我在上面发布了链接)。

将委托设置为您的
UITextField
ivar。将keyboardType属性设置为
UIKeyboardTypeNumberPad
编写此代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{  
    if ([string isEqualToString:@"-"]){  
        return NO;  
    }  

    return YES;  
}

从我的头顶:

使用
[textField.text intValue]
将字符串转换为整数,并检查其是否为正。 我会在
UITextFieldDelegate
协议的
-(BOOL)textField shouldendediting:(UITextField*)textField
方法中执行此操作


干杯

添加UITextFieldDelegate,并将此代码添加到您的类中

#define LEAGELNUM @"0123456789"
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:LEAGELNUM] invertedSet];
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]     componentsJoinedByString:@""];
        BOOL basicTest = [string isEqualToString:filtered];
        return basicTest;
}
LEAGELNUM的意思是你只能写这些单词,使用这个答案的逻辑


如果用户没有输入数字怎么办。如果用户输入了)或-?将textField的keyboardType属性设置为
UIKeyboardTypeNumberPad
数字键盘有一些特殊符号,该怎么办。如何检查用户是否输入了特殊符号?UIKeyboardTypeNumberPad没有)字符。根据if([string isEqualToString:@“-“])哇,UIKeyboardTypeNumberPad除了数字之外没有任何东西:)。这将是唯一的正值。请你举个例子(通过编辑你的答案),我如何使用NSFormatter来检查textfield是否只有正数?完成-Bonny的答案更好,不过:)嘿,那个答案很好!甚至比我的方法更好,为你+1!嘿,如果我只想限制一个文本框,但使用另一个文本框来输入文本怎么办?@Wezly您可以检查textField是否是您需要限制的实例。使用
if(textField==xxx)
或使用其标记,如
if(textField.tag==xxx.tag)
xxx是您的textField实例。如果不知道它,
LEAGELNUM
是一个错误销售。我想你的意思是“法律”
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if (string.characters.count == 0) {
        return true
    }
    /// check number is postive
    if (textField == self.txtPay) {
        let formatter = NSNumberFormatter()
        formatter.locale = NSLocale.currentLocale()
        let findalString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
        let number = formatter.numberFromString(findalString)
        return number?.integerValue > 0
    }

    return true
}