【问题标题】:how to validate amount text value如何验证金额文本值
【发布时间】:2015-05-19 13:08:25
【问题描述】:

我面临一个小问题,即如何验证 uitextfiled 中的金额值。我提交的文本数量限制应大于 10 卢比,值之间的范围为 99999 卢比。如果用户输入无效金额,如 Rs.01,02,04,09,应避免使用此类数字

我刚刚做了简单的方法来调用我的函数:

 if ([amount.text length]>=2 && [amount.text length]<=5) {

}else{


    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    return;
}

【问题讨论】:

    标签: ios objective-c iphone uitextfield


    【解决方案1】:

    请看下面的代码:

    if ([amount.text doubleValue]>=10 && [amount.text doubleValue]<99999){
    
    }
    else{
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
        return;
    }
    

    【讨论】:

      【解决方案2】:

      您真的应该使用NSNumberFormatter 进行解析。如果输入损坏,它是高度可配置的并且很容易说。除此之外,它还有一个 minimummaximum 属性。

      【讨论】:

        【解决方案3】:
         int val = amount.text.integerValue
        if (val > 10 && val < 99999){
        
        }
        else{
        
        
            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alert show];
        }
        

        【讨论】:

          【解决方案4】:

          你应该使用:

          - (BOOL)textField:(UITextField *)textField
          shouldChangeCharactersInRange:(NSRange)range
          replacementString:(NSString *)string 
          

          在这里,您可以完全控制将在文本字段中显示的内容。由于该方法返回一个BOOL 值,如果它满足您的要求,您可以接受替换字符串(通过返回YES)或通过返回NO 保留旧文本。

          不要忘记将委托分配给UITextField,以便调用此方法。

          更多信息请查看:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/#//apple_ref/occ/intfm/UITextFieldDelegate/textField:shouldChangeCharactersInRange:replacementString:

          编辑:

          可能的解决方案:

          1. 如果文本字段只能使用数字字符,则应将键盘类型设置为:

            textfield.keyboardType = UIKeyboardTypeNumberPad;

          2. 在上述方法的实现中你可以这样写:

            NSInteger value = [textField.text stringByReplacingCharactersInRange:range withString:string].integerValue; if (value >=10 && value <= 99999){ return YES; }else{ // inform the user the input is invalid return NO; }

          【讨论】:

            【解决方案5】:

            使用下面的代码来限制用户输入单个号码和6位号码。

            注意:使用KeyboardType作为UIKeyboardTypeNumberPad

            - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
            {
                if (textField.text.length >= 5 && range.length < 2)
                {
                    return NO; //Not allowing the user to enter single character or greater than 5 characters
                }
                else
                {
                return YES;
                }
            
            }
            

            希望对您有所帮助...!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-02-28
              • 2017-10-03
              • 2013-03-10
              • 2022-06-13
              • 1970-01-01
              • 2012-09-17
              • 2022-08-02
              • 1970-01-01
              相关资源
              最近更新 更多