2009-03-25 3 views
1

ユーザーがテキストフィールドをクリックしたときにパネルを開きたいとします。私は、クリックイベントに応答するデリゲートメソッドを使うべきだと思います。私はテキストフィールドのクリックに応答するために使用するデリゲートメソッドはどれですか?

- (void)textDidBeginEditing:(NSNotification *)aNotification 

方法が機能しないことがわかった、と

- (void)controlTextDidBeginEditing:(NSNotification *)aNotification 

方法が機能することを、私は、テキストフィールド内のテキストを編集する場合にのみ、その後、私はそれをクリックしません。テキストを再度編集すると、この方法は機能しません。どうして?


申し訳ありません申し訳ありませんが、私はこれをMacで使用したいと思いますが、iphoneではなく、ココアでどうしますか?

答えて

5

textFieldDidBeginEditing:デリゲートメソッドは、メソッド名が示すように、UITextField内のテキストの編集を開始したときにのみトリガされます。

あなたはUITextFieldをタッチするときの方法をトリガしたい場合、あなたはこの試してみてください:

[textField addTarget:self 
       action:@selector(textFieldTouched:) 
    forControlEvents:UIControlEventTouchDown]; 

- (void) textFieldTouched:(id)sender { 
    // Display the panel 
} 
+0

申し訳ありません、私はiPhoneではなく、Macでこれを使用したいと思います。どのようにココアでそれを行うには? – jin

+0

@jin http://stackoverflow.com/questions/684166/which-delegate-method-should-i-use-to-respond-to-clicks-on-an-nstextfield/4473352#4473352にはかなり良い返信があります。一見。 – Jais

3

を正しいデリゲートメソッド名は、ドキュメントから

- (void)textFieldDidBeginEditing:(UITextField *)textField 

です:

このメソッドは、指定されたテキストフィールドが最初のレスポンダになったことをデリゲートに通知します。

関連する問題