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

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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容