UITextFieldWithLimit はUITextFieldのサブクラスとして使えて文字数制限が出来るライブラリです。

iOS で文字数制限つきのテキストフィールドをちゃんと作るのは難しいという話 – blog.niw.at 等を読んだ事がある方は知っていると思いますが、日本語(IME)などを含めた文字数制限を実装するのはとても面倒です。

UITextFieldWithLimit はUITextFieldのサブクラスなので、クラスを置き換えるだけでうごきます。

gif

インストール

CocoaPodsでインストールできます。


pod "UITextFieldWithLimit"

使い方

以下で試すことが出来ます。

pod try UITextFieldWithLimit

基本的にはUITextFieldそのままですが、

maxLength

で制限する文字数を指定することが出来ます。(これはただのlength取ってるだけなのでまた正確な文字数とは別という話…)

limitDelegate

で文字数に達した時と、文字数を超えて入力された時のメソッドも定義出来ます。


- (void)viewDidLoad {
    [super viewDidLoad];
    self.limitedTextField = [[UITextFieldWithLimit alloc] init];
    self.limitedTextField.maxLength = @15;
    // optional
    self.limitedTextField.limitDelegate = self;
}
- (void)textFieldLimit:(UITextFieldWithLimit *) textFieldLimit didReachLimitWithLastEnteredText:(NSString *) text inRange:(NSRange) range {
    NSLog(@"%s", sel_getName(_cmd));
}
- (void)textFieldLimit:(UITextFieldWithLimit *) textFieldLimit didWentOverLimitWithDisallowedText:(NSString *) text inDisallowedRange:(NSRange) range {
    NSLog(@"%s", sel_getName(_cmd));
}

こういう制限は標準機能として欲しい感じです。。

JonathanGurebo/UITextFieldLimitの動きを元に日本語のケースを追加した感じです。

Post Navigation