textField的代理方法,監聽textField的文字改變

/**spa

 *  textField的代理方法,監聽textField的文字改變代理

 *  textField.text是當前輸入字符以前的textField中的textstring

 *io

 *  @param textField textFieldclass

 *  @param range     當前光標的位置方法

 *  @param string    當前輸入的字符co

 *字符

 *  @return 是否容許改變return

 */location

#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;

}

相關文章
相關標籤/搜索