UITextField Target/Action vs. Delegate-Methoden
-
12-12-2019 - |
Frage
Ich habe XCode verwendet, um meine Apps zu entwickeln und zu verwenden.Ich könnte in IB/Storyboard einen Link erstellen, der diese Methoden synthetisiert:
- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents
für wann
Nein, ich mache das alles programmgesteuert (in Rubymotion, wenn auch nicht unbedingt relevant) und als ich mir die Dokumentation für UITextField angesehen habe, habe ich einige Delegate-Methoden gefunden, die ich wie folgt implementiert habe:
def textFieldShouldReturn(text_field)
text_field.resignFirstResponder
end
def textFieldShouldEndEditing(text_field)
# this is for validations; don't set a first responder here
true
end
def textFieldDidEndEditing(text_field)
text_field == @email_field ? @password_field.becomeFirstResponder : delegate.validate_login_info
end
Aber dabei stellte ich fest, dass ich die Eingabefelder (von denen ich zwei habe) nicht mit der Tabulatortaste durchblättern konnte.E-Mail und Passwort), wie ich es zuvor mit dem addTarget-Ansatz konnte.
Was ist der Unterschied zwischen diesen beiden Ansätzen?Setzt Ersteres Letzteres hinter den Kulissen um?Ich verstehe nicht, warum mir der eine das Durchblättern erlaubt und der andere nicht.Habe ich die Delegate-Methoden einfach anders implementiert als der Ziel-/Aktionsansatz hinter den Kulissen?
Feedback geschätzt, Pachun
Lösung
Das hat nichts mit Ziel/Aktion zu tun.Ich gehe davon aus, dass Sie im Interface Builder meinen, Sie würden aus dem ziehen UITextField
zum File's Owner
und wählen Sie im HUD den Delegierten aus.
Das oben Gesagte hätte zur Folge, dass der Delegate des TextFields zugewiesen würde, was Sie in Code wie diesem tun müssten
@email_field.delegate = self
@password_field.delegate = self
Das Obige geht davon aus, dass die Klasse, die das erstellt UITextField
's wird als ihr Delegierter fungieren.
Andere Tipps
Ich weiß nicht, ob in diesem Fall ein Unterschied zwischen Delegation und Ziel / Aktion gibt, aber mit der Delegation auf diese Weise funktioniert: generasacodicetagpre.
grüße