分享

field输入小数点后两位

 九辰夕 2016-05-06

这个作用需要在下面的方法中进行判断

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


============代码片段如下==========

//textField只能输入@"0123456789.",且只能输入到小数点后两位,第一位不能是小数点

-(BOOL)isValidateCharacter:(NSString*)string andTextField:(UITextField*)textField

{

    //用来标示字符串中是否存在小数点

    BOOL exitPoint=NO;

    BOOL res=YES;

    //合法的字符集合

    NSCharacterSet*tmpSet=[NSCharacterSet characterSetWithCharactersInString:@"0123456789."];

    int i=0;

    while (i<string.length) {

        //首先判断是否有不合法的字符

        NSString*subString=[string substringWithRange:NSMakeRange(i, 1)];

        NSRange range=[subString rangeOfCharacterFromSet:tmpSet];

        if (range.length==0) {

            res= NO; //说明subString是不合法的字符

            break;

        }

        //第一个字符不能是小数点

        if ((textField.text.length==0)&&([subString isEqualToString:@"."])) {

            res=NO;

            break;

        }

        //只能有一个小数点

        if ([subString isEqualToString:@"."]) {

            exitPoint=YES;

            NSString*str=textField.text;

            NSRange strRange=[str rangeOfString:@"."];

            if (strRange.length>0) {

                res=NO;//textfield已经存在小数点,而且即将输入的也是小数点

                break;

            }

        }

        //小数点后两位

        NSRange rangePoint=[textField.text rangeOfString:@"."];

        if (rangePoint.length>0) {

            NSString*point=[[textField.text componentsSeparatedByString:@"."] lastObject];

            if (point.length>=2) {

                res=NO;

                break;

            }

        }

        i++;

    }

    return res;

}



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多