验证文本字段

用户名

我正在尝试验证范围限制为5的文本字段,并且也不允许在起始字符上仅插入0值,并且我也想用特殊字符限制文本字段,以下是我的代码我的两个功能范围限制和起始值接受的字符0可以正常工作,但是特殊字符的限制无法正常工作,请问我是什么问题?

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

                [self isNumeric:textField.text];

                NSUInteger newLength = [textField.text length] + [string length] - range.length;

                if (range.location == 0 && [string isEqualToString:@"0"]) {
                    return NO;
                 }
                return (newLength > 5) ? NO : YES;

        }


-(BOOL)isNumeric:(NSString*)inputString{

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_NUMBERS] invertedSet];
    NSString *filtered = [[inputString componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    return [inputString isEqualToString:filtered];
}
simalone

我认为您要限制5个数字字母,但0不能是第一个数字:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string{
    NSString *resultStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if([self isNumeric:resultStr]){
        if(resultStr.length <= 5){
             if(resultStr.length >= 1){
                  NSString *firstLetter = [resultStr substringWithRange:NSMakeRange(0, 1)];
                  if(![firstLetter isEqualToString:@"0"]){
                      return YES;
                  }
             }
             else{
                  return YES;
             }
        }
    }

    return NO;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章