今日にもMOLESKINE のThe HOBBIT Edition が届くので、今使っている子(MOLESKINE プレーン・ポケット)を早く使い切るべく、モレスキンお蔵出しを増量開始です。 *01【早く使い切るべく】動機がどうにも酷いですが、結果オーライで。
UITextView (あるいはUITextField )への入力を検知したい
文字数カウントをはじめ、テキストフィールドへの入力都度、何らかの処理を走らせたい場合というのは多いです。
その割には、まいど忘れちゃうので、例によって備忘録的に。
showChangeTextInRange: を使う。
UITextView もUITextField も、内容変更を検出するdelegate メソッドを持っています。
それがshowChangeTextInRange:メソッドです。
(ちなみに、UITextField はshowChangeCharactersInRange:)
使い方
1..hファイルのプロトコルにUITextViewDelegate (またはUITextFieldDelegate )を設定
delegate メソッドなので、ヘッダーファイルでプロトコル継承が必要です。
// MyViewController.h #import@interface MyViewController : UIViewController // UITextField の場合はUITextFieldDelegate /* 以下略*/
2..mファイルにdelegate メソッドを実装
.mファイルに以下のdelegate メソッドを実装します。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { // ここに入力検知時に実行させたい処理を記述 return YES; }
以上。
なんか挙動が微妙なので注意
2011年の記事ですが、こんなんもありました。
どうもdelegate関数の呼び出しトリガーや文字数カウントにiOSのバージョンによる違いがある模様。
現状どうなっているのか、ちゃんと確認しておく方が良さげ。
iOS5のテキスト入力チェックイベントの挙動に注意!(shouldChangeCharactersInRange/shouldChangeTextInRange) – あらきんぐのiPhoneアプリ開発ブログ
脚注
↩01 | 【早く使い切るべく】動機がどうにも酷いですが、結果オーライで。 |
---|