• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【iOS】TextFieldでテキスト入力イベント)

【iOS】TextFieldでテキスト入力イベント

このQ&Aのポイント
  • xcode4.5、iOS6でテキストが入力された時のイベントを捕捉する方法とは?
  • UITextFieldを継承してイベントを追加するカスタムクラスを作成したい。
  • イベントの追加方法がわからず、どうコーディングすればいいかわからない。

質問者が選んだベストアンサー

  • ベストアンサー
  • khp20xx
  • ベストアンサー率100% (1/1)
回答No.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 でした。

naktak
質問者

お礼

ご回答ありがとうございます。 うーん、なんだか良く分かってないせいで、作り方が分かりません・・・。 viewDidLoadはUITextFieldには無いようなので、ダメそうです。 個人的には、  ・DecimalTextFieldクラスを、UITextFieldを継承して用意   その中で、必要なイベントを記述。(デリゲート必要?)  ・storyboardのあるViewController上にUITextFieldを設置し、   UITextFieldのCustom Class属性に、DecimalTextFieldを記述 これをするだけで、ViewController上に設置したUITextFieldは、 DecimalTextFieldの機能を有するもので、ViewController上に、 わざわざデリゲートを指示してあげたり、イベントを記述する 必要がないという認識なのですが、やり方がさっぱりです。 UITextFieldに(void)drawRectがあって、そこにNSLog()を書いて 見たら動作したので、そこに self.delegate = self; としても無限ループに陥ったみたいで、うまくいきませんでした。 セオリーが不明で、めちゃくちゃつまづいてしまってます。。。

naktak
質問者

補足

デリゲートではなく、イベントを設定することで実現できました。 【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"); }

関連するQ&A