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

2018-05-02  本文已影响12人  尕歪Tia

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;

}
上一篇下一篇

猜你喜欢

热点阅读