2009-03-25 3 views
1

Ich möchte ein Fenster öffnen, wenn der Benutzer auf ein Textfeld klickt. Ich denke, ich sollte eine Delegate-Methode verwenden, die auf das Click-Ereignis reagiert. Ich fand, dass dieWelche Delegate-Methode sollte ich verwenden, um auf Klicks auf ein Textfeld zu reagieren?

- (void)textDidBeginEditing:(NSNotification *)aNotification 

Methode nicht funktioniert, und dass die

- (void)controlTextDidBeginEditing:(NSNotification *)aNotification 

Methode funktioniert, aber nur, wenn ich den Text in dem Textfeld bearbeiten, nicht dann klicke mich auf. Wenn ich den Text erneut bearbeite, funktioniert diese Methode nicht. Warum?


Sorry, ich glaube, ich dies auf dem Mac verwenden möchten, nicht auf dem iPhone, wie mit ihm mit Kakao zu tun?

Antwort

5

Die Delegate-Methode textFieldDidBeginEditing: wird nur ausgelöst, wenn der Benutzer beginnt, den Text innerhalb der UITextField zu bearbeiten, wie der Methodenname impliziert.

Wenn Sie eine Methode auslösen soll, wenn der UITextField berührt wird, sollten Sie dies versuchen:

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

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

Sorry, ich denke, ich möchte dies auf Mac verwenden, nicht auf dem iPhone, Wie geht es mit Kakao? – jin

+0

@jin http://stackoverflow.com/questions/684166/which-delegate-method-should-i-use-to-respond-to-clicks-on-nnntextfield/4473352#4473352 hat ziemlich gute Antwort, haben ein Blick. – Jais

3

Die richtige Delegatmethode Name

- (void)textFieldDidBeginEditing:(UITextField *)textField 

Aus der Dokumentation ist:

Diese Methode benachrichtigt den Delegaten, dass das angegebene Textfeld gerade zum Erstbeantworter geworden ist.

Verwandte Themen