我需要验证UITextField
。我只想在其中输入正整数。我怎样才能做到这一点?
答案 0 :(得分:6)
添加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意味着你只能写这些单词
答案 1 :(得分:4)
我设置了一个NSNumberFormatter来从UITextFields文本属性中检索一个数字。然后从数字中获取一个intValue并检查它是否为> = 0。
<强>更新强>
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
NSNumber *number = [formatter numberFromString:[textField text]];
[formatter release];
这应该让你去。我现在不在我的开发机器上,所以我无法测试运行它,也许你需要做一两行设置。有关可用选项,请参阅参考库(我在上面的链接中发布)。
答案 2 :(得分:1)
将委托设置为UITextField
ivar。将keyboardType属性设置为UIKeyboardTypeNumberPad
写下这段代码。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([string isEqualToString:@"-"]){
return NO;
}
return YES;
}
答案 3 :(得分:0)
从头到尾:
使用[textField.text intValue]
将字符串转换为整数,并检查它是否为正数。
我会在- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
协议的UITextFieldDelegate
方法中执行此操作。
干杯
答案 4 :(得分:0)
使用此答案的逻辑Toastor
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
}