iOS 判断输入框内容是否是数字,并可以时时判断输入内容是否符合金额形势

来源:互联网 发布:大智慧 cyc 源码 编辑:程序博客网 时间:2024/05/31 13:14

BOOL  isHaveDian; 

我们还要用到  textField 的协议方法

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

这个方法每当我增删的时候都会调用

string 增加删除的字符串

(NSRange)range  是string的范围


SVProgressHUD为第三方提示库 下载地址:http://download.csdn.net/detail/wangqinglei0307/9728903


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

    if ([_money_textfile.textrangeOfString:@"."].location==NSNotFound) {

        isHaveDian=NO;

    }

    if ([stringlength]>0){

        unichar single=[stringcharacterAtIndex:0];//当前输入的字符

        if ((single >='0' && single<='9') || single=='.'){//数据格式正确

            //首字母不能为0和小数点

            if([_money_textfile.textlength]==0){

                if(single =='.'){

                    [SVProgressHUD showErrorWithStatus:@"提示,第一个数字不能为小数点"];

                    [_money_textfile.textstringByReplacingCharactersInRange:rangewithString:@""];

                    returnNO;

                }

                if (single =='0') {

                    [SVProgressHUD showErrorWithStatus:@"提示,第一个数字不能为0"];

                    [_money_textfile.textstringByReplacingCharactersInRange:rangewithString:@""];

                    returnNO;

                    

                }

            }

            if (single=='.'){//text中还没有小数点

                if(!isHaveDian){

                    isHaveDian=YES;

                    returnYES;

                }else{

                    [SVProgressHUD showErrorWithStatus:@"提示,您已经输入过小数点了"];

                    [_money_textfile.textstringByReplacingCharactersInRange:rangewithString:@""];

                    returnNO;

                }

            }else{//存在小数点

                if (isHaveDian){

                    //判断小数点的位数

                    NSRange ran=[_money_textfile.textrangeOfString:@"."];

                    int tt=range.location-ran.location;

                    if (tt <=2){

                        returnYES;

                    }else{

                        [SVProgressHUDshowErrorWithStatus:@"提示,您最多输入两位小数"];

                        returnNO;

                    }

                }

                else{

                    returnYES;

                }

            }

        }else{//输入的数据格式不正确

            [SVProgressHUD showErrorWithStatus:@"提示,您输入的格式不正确"];

            [_money_textfile.textstringByReplacingCharactersInRange:rangewithString:@""];

            returnNO;

        }

    } else {

        returnYES;

    }

    returnYES;

}

0 0
原创粉丝点击