textField的代理方法,监听textField的文字改变

/**

 *  textField的代理方法,监听textField的文字改变

 *  textField.text是当前输入字符之前的textField中的text

 *

 *  @param textField textField

 *  @param range     当前光标的位置

 *  @param string    当前输入的字符

 *

 *  @return 是否允许改变

 */

#pragma mark - textField的代理方法,监听textField的文字改变

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

{

    /*

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

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

     * 只能有一个小数点

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

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

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

     */

    BOOL isHaveDian;

 

    //第1位必须是.

    if (string.length > 0) {

        if([textField.text length]==0){

            unichar single = [string characterAtIndex:0];

            if (string.length > 0) {

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

                    return NO;

                }

            }

        }

    }

 

    //第二位必须是.

    if (string.length > 0) {

        if([textField.text length]==1){

            NSString *str1 = [string substringToIndex:1];

            if (string.length > 0) {

                if (![str1  isEqual:@"."]){

                    return NO;

                }

            }

        }

    }

    // 判断是否有小数点

    if ([textField.text containsString:@"."]) {

        isHaveDian = YES;

    }else{

        isHaveDian = NO;

    }

    //当前输入的字符

    if (string.length > 0) {

        //当前输入的字符

        unichar single = [string characterAtIndex:0];

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

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

            return NO;

        }

        // 只能有一个小数点

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

            return NO;

        }

        //判断小数点的位数

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

        NSInteger tt=range.location-ran.location;

        if (tt <= 3){

            return YES;

        }else{

            return NO;

        }

    }

    return YES;

}

posted @ 2018-06-22 10:24  懒猫口米  阅读(375)  评论(0编辑  收藏  举报