iOS Developerios实用开发技巧

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

2017-02-07  本文已影响60人  Abler

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;
}
上一篇下一篇

猜你喜欢

热点阅读