美文网首页iOS Developerios实用开发技巧
iOS拓展28-textfield输入限制个数

iOS拓展28-textfield输入限制个数

作者: Abler | 来源:发表于2017-02-07 15:36 被阅读60次

    textfield使用过程中,很多时候有限制条件,虽然不难,但是细节上还是有很多要处理.代码中列出常见的细节bug,和解决方法.如有不足,欢迎指正.

    1.限制字数后,delete键不能用. (如果自己第一次写,一般都会遇到)
    2.首位数不能为0(如果把range传进来,更容易实现,且无bug)
    // 第3个bug很容易忽略
    3.输入数字后,移动光标在首位输入0;(如输入12,移动光标输入012)<下面方法没有修改这个bug,请自行修改(直接判断全部字符串的首位)>
    
    1.方法调用
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
        return [self validateNumber:textField.text andCharacter:string];
    }
    
    2.方法实现(根据自己需求改条件)
    - (BOOL) validateNumber:(NSString *)number andCharacter:(NSString *)str {
        // 当输入达到10个字符时候,delete键可用
        if (str.length == 0)
        {
           return YES;
        }
        //首数字不能为0,没有需求可以删除
        if ([str intValue] == 0)
        {
            if (number.length == 0)
            {
                return NO;
            }
        }
        // 最多只能输入10位数
        if (number.length > 9)//自己改
        {
            return NO;
        }
        
        BOOL res = YES;
        // 只能输入数字,改成字母就只能输入字母(随个人需求)
        NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
        int i = 0;
        while (i < str.length) {
            NSString * string = [str substringWithRange:NSMakeRange(i, 1)];
            NSRange range = [string rangeOfCharacterFromSet:tmpSet];
            if (range.length == 0)
            {
                res = NO;
                break;
            }
            i++;
        }
        return res;
    }
    

    相关文章

      网友评论

        本文标题:iOS拓展28-textfield输入限制个数

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