美文网首页
textFeild 输入数字判断

textFeild 输入数字判断

作者: 寒雨晚风 | 来源:发表于2020-06-18 14:24 被阅读0次

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

{

    /*

     * 不能输入.0-9以外的字符。

     * 设置输入框输入的内容格式

     * 只能有一个小数点

     * 小数点后最多能输入两位

     * 如果第一位是.则前面加上0.

     * 如果第一位是0则后面必须输入点,否则不能输入。

     */

    // 判断是否有小数点

    if([textField.textcontainsString:@"."]) {

        self.isHaveDian=YES;

    }else{

        self.isHaveDian=NO;

    }

    if(string.length>0) {

        //当前输入的字符

        unicharsingle = [stringcharacterAtIndex:0];

        NSLog(@"single = %c",single);

        // 不能输入.0-9以外的字符

        if(!((single >='0'&& single <='9') || single =='.'))

        {

            [self showMBProgressHUDOnKeyBoard:@"您的输入格式不正确"];

            returnNO;

        }

        // 只能有一个小数点

        if(self.isHaveDian&& single =='.') {

             [self showMBProgressHUDOnKeyBoard:@"最多只能输入一个小数点"];

            returnNO;

        }

        // 如果第一位是.则前面加上0.

        if((textField.text.length==0) && (single =='.')) {

            textField.text=@"0";

        }

        // 如果第一位是0则后面必须输入点,否则不能输入。

        if([textField.texthasPrefix:@"0"]) {

            if(textField.text.length>1) {

                NSString*secondStr = [textField.textsubstringWithRange:NSMakeRange(1,1)];

                if(![secondStrisEqualToString:@"."]) {

                     [self showMBProgressHUDOnKeyBoard:@"第二个字符需要是小数点"];

                    returnNO;

                }

            }else{

                if(![stringisEqualToString:@"."]) {

                     [self showMBProgressHUDOnKeyBoard:@"第二个字符需要是小数点"];

                    returnNO;

                }

            }

        }

        // 小数点后最多能输入两位

        if(self.isHaveDian) {

            NSRangeran = [textField.textrangeOfString:@"."];

            // 由于range.location是NSUInteger类型的,所以这里不能通过(range.location - ran.location)>2来判断

            if(range.location> ran.location) {

                if([textField.textpathExtension].length>1) {

                     [self showMBProgressHUDOnKeyBoard:@"小数点后最多有两位小数"];

                    returnNO;

                }

            }

        }

    }

    return YES;

}

相关文章

网友评论

      本文标题:textFeild 输入数字判断

      本文链接:https://www.haomeiwen.com/subject/icfrxktx.html