解決済み

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

  • すぐに回答を!
  • 質問No.7833223
  • 閲覧数1061
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 66% (482/721)

xcode4.5、iOS6です。

UITextFieldを継承して、テキストが入力された時のイベントをキャッチし、
処理を行うカスタムクラスを作成したいのですが、イベントの追加方法が
わかりません。

今できているのは、単純に、クラスにUITextFieldを継承元に定義したこと
だけで、その先が、調べて、何をどう書いてもイベントを捕捉できません。
http://iphone-tora.sakura.ne.jp/uitextfield.html
http://iphone-tora.sakura.ne.jp/uicontrol.html
このあたりを見ても、イベントの捕捉方法がわからず・・・。

どうコーディングするとイベントが捕捉できるようになるのでしょうか?

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

  • 回答No.1

ベストアンサー率 100% (1/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

お礼率 66% (482/721)

デリゲートではなく、イベントを設定することで実現できました。

【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");
}
投稿日時 - 2012-12-12 10:18:18
お礼コメント
naktak

お礼率 66% (482/721)

ご回答ありがとうございます。

うーん、なんだか良く分かってないせいで、作り方が分かりません・・・。
viewDidLoadはUITextFieldには無いようなので、ダメそうです。

個人的には、
 ・DecimalTextFieldクラスを、UITextFieldを継承して用意
  その中で、必要なイベントを記述。(デリゲート必要?)
 ・storyboardのあるViewController上にUITextFieldを設置し、
  UITextFieldのCustom Class属性に、DecimalTextFieldを記述

これをするだけで、ViewController上に設置したUITextFieldは、
DecimalTextFieldの機能を有するもので、ViewController上に、
わざわざデリゲートを指示してあげたり、イベントを記述する
必要がないという認識なのですが、やり方がさっぱりです。

UITextFieldに(void)drawRectがあって、そこにNSLog()を書いて
見たら動作したので、そこに
self.delegate = self;
としても無限ループに陥ったみたいで、うまくいきませんでした。

セオリーが不明で、めちゃくちゃつまづいてしまってます。。。
投稿日時 - 2012-12-07 00:15:47
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ