TSValidatedTextField 1.0.0

TSValidatedTextField 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

匿名 维护。



简单易用的 UITextField 子类,允许您使用设置的格式验证 TextField 文本值。

imageimage

属性

regexpPattern - 将用于验证字段值的学生模式。

regexp - 您可以传递以使用而不是默认正则表达式的 NSRegularExpression 对象。

regexpValidColor - 有效的文本值颜色。

regexpInvalidColor - 无效文本值颜色。

颜色不是必需的,您可以通过设置块进行设置,在字段验证后进行其他操作。

validatedFieldBlock - 返回 ValidationResult 枚举值的块。默认不设置。您可以设置它,但不是必需的。应在验证期间执行比更改 textField 颜色更复杂的事情(使用 regexpValidColor 和 regexpInvalidColor)。

validWhenType - 默认设置为 YES。如果您设置为 NO,则值将在编辑完成时进行验证。例如,在切换到下一个字段后。

looksForManyOccurences - 如果设置为 YES,字段将进行验证且验证器将在值中查找一个或多个匹配项。应与以下描述的 occurrencesSeparators 属性结合使用。

occurencesSeparators - 此值只应在使用 looksForManyOccurences 时设置。此数组存储用户可以在字段中使用的分隔符。例如,用户输入了数字 "20, 30,40, 50"。如果 occurencesSeparators 设置为 @[",", ", "],该值将成功通过验证。该属性可以简化模式。

numberOfCharactersToStartValidation - 当字段值等于或长于设置的数字时进行验证。如果文本比此值短,字段看起来正常(没有有效和无效颜色 - 初始状态),但如果已定义块,它将使用 ValueTooShortToValidate 调用该块。默认设置为 1(最小值)。

isValid - (只读,BOOL) 如果字段中的值有效,则返回 YES,否则返回 NO。

如何使用它?

有几种方法可以使用此类。

1) 带颜色的文本字段

    _fullNameTextField.regexpPattern = @"[a-zA-Z]{2,}+(\\s{1}[a-zA-Z]{2,}+)+"; /// e.g. Tomasz Szulc or Cing Yo Ciong
    _fullNameTextField.regexpValidColor = [UIColor validColor];
    _fullNameTextField.regexpInvalidColor = [UIColor invalidColor];

已设置正则表达式模式和有效的正则表达式颜色。 textField 在用户输入时进行验证。

2) 带验证块的字段

    _phoneNumberTextField.regexpPattern = @"\\d{3}-\\d{3}-\\d{3}"; /// e.g 555-343-333
    _phoneNumberTextField.minimalNumberOfCharactersToStartValidation = 11;
    _phoneNumberTextField.validWhenType = NO;
    _phoneNumberTextField.validatedFieldBlock = ^(ValidationResult result, BOOL isEditing) {

        switch (result) {
            case ValidationPassed:
                NSLog(@"Field is valid.");
                break;

            case ValidationFailed:
                NSLog(@"Field is invalid.");
                break;

            case ValueTooShortToValidate:
                NSLog(@"Value too short to validate. Type longer");
                break;
        }
    };

未设置颜色(即使有效或无效,textColor 也会相同)。validWhenType 属性已设置为 NO,因此字段将在用户结束编辑时进行验证。代替更改文本颜色,块将被调用,其中包含 ValidationResult 枚举的一个案例。

3) 几个字符后的验证

    _wordStartsWithA.regexpPattern = @"^A[a-zA-Z]{3,}";
    _wordStartsWithA.regexpValidColor = [UIColor validColor];
    _wordStartsWithA.regexpInvalidColor = [UIColor invalidColor];

    /// Visualization of validation will be visible when value is 4 characters long.
    _wordStartsWithA.minimalNumberOfCharactersToStartValidation = 4;

如果文本字段长度等于或长于最小字符数来开始验证,则会对文本字段进行验证。如果已经配置了此块,它将使用 TooShortToValidate 参数被调用。

4) TextField 对多次出现进行检查

    _separatedNumbersByComma.regexpPattern = @"[-]?[0-9]+";
    _separatedNumbersByComma.regexpValidColor = [UIColor validColor];
    _separatedNumbersByComma.regexpInvalidColor = [UIColor invalidColor];
    _separatedNumbersByComma.looksForManyOccurences = YES;
    _separatedNumbersByComma.occurencesSeparators = @[@",", @", "];

在这里已设置 looksForManyOccurences 和 occurrencesSeparators。如果字段需要数字,可以在用户输入 "20, 20, 40, 60" 或 "20,20,40,60" 或 "20, 20,40, 60" 时验证成功。强烈建议一起使用 looksForManyOccurences 和 occurrencesSeparators。

5) 带有自定义 NSRegularExpression 的 TextField

    _wordStartsWithB.regexpValidColor = [UIColor validColor];
    _wordStartsWithB.regexpInvalidColor = [UIColor invalidColor];

    NSString *pattern = @"^B[a-zA-Z]{3,}";
    NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];

    [_wordStartsWithB setRegexp:regexp];

如果默认的 NSRegularExpression 不够用,您可以设置自定义的。