UITextFieldの本当の文字数をみてなかた
ほんたったで写経したり、設計書や資料集やらを置いて捗りまくりです。

- 出版社/メーカー: 株式会社エジソン
- メディア: オフィス用品
- 購入: 1人 クリック: 36回
- この商品を含むブログ (1件) を見る
本題
UITextFieldを2つ、UIButtonを1つの画面を作っていて、
UITextFieldが2つともN文字以上の場合のみ、UIButtonを有効にしたい
こういう時、UITextFieldDelegateを使いますよね。
UITextFieldDelegate Protocol Reference
たぶん、使うのはshouldChangeCharactersInRangeだと思うんですけど、
なんか思い通りにいかなくて。
hogeTextFieldの長さを取得するのに、
int hogeLen = hogeTextField.text.length;
こうしてるんだけど、
1文字入力
hogeLen :0
⬇
1文字削除
hogeLen :1
なんでだよーと思ってたら、ようはdelegateで捕まえてきた時の入力前の状態なのね。
というわけで、shouldChangeCharactersInRangeの引数を使って解決。
まとめ
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSMutableString *str = [textField.text mutableCopy]; [str replaceCharactersInRange:range withString:string]; /* * あとはlengthをとって、文字数オーバならNOを返せばいいし、 * 問題ないなら、そのhogeTextField.selected = YESとかしちゃって、 * 他UITextFieldのselectedをみつつ、条件が合致すれば、button.enabled でいいかも */ return YES; }