- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【iOS】TextFieldでテキスト入力イベント)
【iOS】TextFieldでテキスト入力イベント
このQ&Aのポイント
- xcode4.5、iOS6でテキストが入力された時のイベントを捕捉する方法とは?
- UITextFieldを継承してイベントを追加するカスタムクラスを作成したい。
- イベントの追加方法がわからず、どうコーディングすればいいかわからない。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ヘッダー(xxx.h)に @interface xxxx <UITextFieldDelegate>//delegate使う宣言 ってつけてあると xxx.mの中のviewDidLoadメソッドあたりで -(void)viewDidLoad{ ... UITextFiled *tf = ...initのかくやつ。 tf.delegate;//<-delegateをこのクラスでつかう宣言がしてあれば [self.view addSubView:tf]; } ⬇入力したときとかに このメソッドとかが呼び出されるかもしれません~ //delegate method - (void)textFieldDidEndEditing:(UITextField *)textField { } - (BOOL)textFieldShouldReturn:(UITextField *)textField { } ためしてないでぐぐっただけなので 見当違いだったらすみません。。 拝見したのは、 http://d.hatena.ne.jp/tomute/20091120/1258780317 でした。
お礼
ご回答ありがとうございます。 うーん、なんだか良く分かってないせいで、作り方が分かりません・・・。 viewDidLoadはUITextFieldには無いようなので、ダメそうです。 個人的には、 ・DecimalTextFieldクラスを、UITextFieldを継承して用意 その中で、必要なイベントを記述。(デリゲート必要?) ・storyboardのあるViewController上にUITextFieldを設置し、 UITextFieldのCustom Class属性に、DecimalTextFieldを記述 これをするだけで、ViewController上に設置したUITextFieldは、 DecimalTextFieldの機能を有するもので、ViewController上に、 わざわざデリゲートを指示してあげたり、イベントを記述する 必要がないという認識なのですが、やり方がさっぱりです。 UITextFieldに(void)drawRectがあって、そこにNSLog()を書いて 見たら動作したので、そこに self.delegate = self; としても無限ループに陥ったみたいで、うまくいきませんでした。 セオリーが不明で、めちゃくちゃつまづいてしまってます。。。
補足
デリゲートではなく、イベントを設定することで実現できました。 【DecimalTextField.m】 - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self addTarget:self action:@selector(textFieldDidBeginEditing:) forControlEvents:UIControlEventEditingChanged]; } return self; } - (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"test"); }