酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

JAMValidatingTextField フォームの超簡単バリデーション[Cocoapods]

Objective-Cで最近はまっていたのは、フォームのバリデーションをいかに簡単に、わかりやすく実装するかでした。で、Cocoapodsでめぼしいのを幾つか試してみて良かった『JAMValidatingTextField』の紹介です!


サンプル画像

こういったUI系はサンプルを見るのが一番!

コードのサンプル

Podfileへの追記

Podfileに以下の内容を追記して、pod installを実行。

1
2
# TextField with Validation
pod 'JAMValidatingTextField'

ビルドインタイプのバリデーションの設定

URLやEmail、zipcode(海外)、電話番号については1行でバリデーションができちゃいます。

1
2
JAMValidatingTextField *emailTextField = [[JAMValidatingTextField alloc] init];
emailTextField.validationType = JAMValidatingTextFieldTypeEmail;

ブロックタイプのバリデーションの設定

1
2
3
4
5
6
7
8
9
10
11
12
JAMValidatingTextField *emailTextField = [[JAMValidatingTextField alloc] init];
emailTextField.validationBlock = ^{
    if (self.blockTextField.text.length == 0) {
        return JAMValidatingTextFieldStatusIndeterminate;
    }

    if (self.blockTextField.text.length > 5) {
        return JAMValidatingTextFieldStatusValid;
    }

    return JAMValidatingTextFieldStatusInvalid;
};

Delegateプロトコルのバリデーションの設定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@interface View () <JAMValidatingTextFieldValidationDelegate>
@end

-(void) layoutSubviews {
    [super layoutSubviews];

    textField.validationDelegate = self;
}

- (JAMValidatingTextFieldStatus)textFieldStatus:(JAMValidatingTextField *)textField;
{
    if (textField.text.length == 0) {
        return JAMValidatingTextFieldStatusIndeterminate;
    }
    return [textField.text rangeOfString:@"P"].location != NSNotFound;
}

正規表現形式のバリデーションの設定

正規表現のバリデーションもできます!

1
2
3
JAMValidatingTextField *emailTextField = [[JAMValidatingTextField alloc] init];
emailTextField.validationRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]{5}" options:0 error:nil];
emailTextField.required = YES;

サンプルソース

作者さんが作っているサンプルソースです。これを気づくまで結構辛かったです^^;

Extending UITextField to Have Validation | Jeff Menter’s Software Blog

おすすめの書籍