2010-04-07 26 views
12

Wenn ich UITextField im Interface Builder erstelle, kann ich auf die Registerkarte Ereignisse zugreifen, die Ereignisse wie Wert geändert, Berühren Abbrechen, Berühren ziehen usw. enthält. Jedem dieser Ereignisse kann ich eigene Methoden zuweisen. Wie kann ich dasselbe tun, wenn ich UITextField programmgesteuert mit alloc erstellen?UiTextField events

+0

Hallo, Ich habe ein UITextField im Interface Builder erstellt und möchte UIControlEventValueChanged registrieren. Wie gehst du vor? Wie definierst du diese Funktion? – Namratha

Antwort

14

Siehe Apple Dokumentation für UIControl. Nach Ihrer textField Initialisierung rufen addTarget:action:forControlEvents:

Beispiel für das Berührungsereignis eine Editiersitzung

[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd] 
+0

Danke, das hat funktioniert – Mike

+9

Das funktioniert nicht, Sie müssen UIControlEventEditingChanged –

11

Statt UIControlEventValueChanged endet, sollten Sie UIControlEventEditingChanged verwenden:

[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged]; 
+1

aus der Antwort von hajikelist verwenden (gehört hier als Kommentar, anstatt eine Antwort selbst zu sein): UIControlEventEditingChanged wird ausgelöst, wenn der Benutzer den Wert [synchron mit Eingabe oder Schlüssel] ändert verursachen zusätzliche Treffer für Ihre Data-Handler-Routine, wenn Sie Werte basierend auf diesem Ereignis speichern und erwarten, dass es sich um eine Art Endwert aus Benutzereingaben handelt ... (Sie könnten unerwartetes Verhalten erhalten, z Textfeld.) – GeneralMike

3

UIControlEventEditingChanged ausgelöst wird, wenn Benutzer-Wert ändert [ synchron mit der Eingabe oder der Tastenbelegung] , die zusätzliche Treffer für Ihre Data-Handler-Routine verursachen könnte, wenn Sie speichern Werte auf der Grundlage dieses Ereignisses und erwarten, dass es sich um eine Art Endwert von Benutzereingaben handelt ...

+1

Ein guter Punkt, aber sollte wahrscheinlich ein Kommentar unter einer der anderen Antworten statt einer Antwort selbst sein, da Sie keine Alternative zu diesen Antworten angegeben haben. – GeneralMike