美文网首页
iOS中TextField中只能输入数字,并且小数点后最多输入两

iOS中TextField中只能输入数字,并且小数点后最多输入两

作者: 尕歪Tia | 来源:发表于2018-05-02 09:42 被阅读12次

    1.设置TextField的keyboardType 为 UIKeyboardTypeDecimalPad

    2.TextField代理方法

    - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
    
    {
    
        /*
    
         * 不能输入.0-9以外的字符。
    
         * 设置输入框输入的内容格式
    
         * 只能有一个小数点
    
         * 小数点后最多能输入两位
    
         * 如果第一位是.则前面加上0.
    
         * 如果第一位是0则后面必须输入点,否则不能输入。
    
         */
    
        // 判断是否有小数点
    
        BOOLisHaveDian =NO;
    
        if([textField.textcontainsString:@"."]) {
    
            isHaveDian =YES;
    
        }
    
    
    
        if(string.length>0) {
    
            //当前输入的字符
    
            unicharsingle = [stringcharacterAtIndex:0];
    
            // 不能输入.0-9以外的字符
    
            if(!((single >='0'&& single <='9') || single =='.')){
    
                returnNO;
    
            }
    
            // 只能有一个小数点
    
            if(isHaveDian && single =='.') {
    
                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:@"."]) {
    
                        returnNO;
    
                    }
    
                }else{
    
                    if(![stringisEqualToString:@"."]) {
    
                        returnNO;
    
                    }
    
                }
    
            }
    
            // 小数点后最多能输入两位
    
            if(isHaveDian) {
    
                NSRangeran = [textField.textrangeOfString:@"."];
    
                if(range.location> ran.location) {
    
                    if([textField.textpathExtension].length>1) {
    
                        returnNO;
    
                    }
    
                }
    
            }
    
        }
    
        return YES;
    
    }

    相关文章

      网友评论

          本文标题:iOS中TextField中只能输入数字,并且小数点后最多输入两

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