Aktion, wenn die kleine Kreuzung von Uitextfield gedrückt wird
-
25-10-2019 - |
Frage
Ich kann eine kleine Kreuzschaltfläche hinzufügen, mit der der gesamte Text in einem einzigen Klick in a gelöscht wird UITextField
mit dem folgenden Code.
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
Ich habe auch implementiert UITextFieldDelegate
.
Ich möchte den rechten Balkenknopf der rechten Balken -Taste aktivieren/deaktivieren UINavigationBar
Nach den Änderungen in meinem UITextField
. Die Regel ist einfach: Wenn das Textfeld mindestens ein Zeichen hat, aktivieren Sie einfach die Schaltfläche, sonst deaktivieren Sie sie.
Ich habe die implementiert UITextField
Delegierte Methode textField:shouldChangeCharactersInRange:
Überprüfen Sie ständig die Anforderungen und aktualisieren Sie den Status der Schaltfläche.
Jetzt ist mein Problem, wenn ich auf die Schaltfläche kleiner Kreuz im Textfeld klicke, die Methode textField:shouldChangeCharactersInRange:
wird nicht genannt. Die erforderliche Aktion fehlt also. Wie kann ich das Drückenereignis der Klarungstaste identifizieren?
Einige Bilder zeigen, wovon ich spreche.
Initiale Stufe: Hier ist die Schaltfläche "Fertig" deaktiviert, da im Textfeld keine Buchstaben vorhanden sind
Beim Eingeben eines Buchstabens ist die Schaltfläche "Fertig" aktiviert
Wenn ich nun auf die Schaltfläche Löschen klicke, ist die Schaltfläche "Fertig" noch aktiviert. Das ist falsch.
Lösung
Verwenden Sie das Delegiermethode textViewShouldClear:
:
Fragt den Delegierten, ob der aktuelle Inhalt des Textfelds entfernt werden sollte.
- (BOOL)textFieldShouldClear:(UITextField *)textField
Parameter
textField
Das Textfeld enthält den Text.
Rückgabewert
YES
Wenn der Inhalt des Textfelds gelöscht werden sollte; Andernfalls,NO
.Diskussion
Das Textfeld ruft diese Methode als Antwort auf den Benutzer auf, der die integrierte Klarschaltfläche drückt. (Diese Schaltfläche wird standardmäßig nicht angezeigt, kann jedoch aktiviert werden, indem der Wert in den Wert geändert wird
clearButtonMode
Eigenschaft des Textfelds.) Diese Methode wird auch aufgerufen, wenn die Bearbeitung beginnt und dieclearsOnBeginEditing
Eigenschaft des Textfelds ist aufYES
.Die Implementierung dieser Methode durch den Delegierten ist optional. Wenn es nicht vorhanden ist, wird der Text so gelöscht, als wäre diese Methode zurückgekehrt
YES
. Verfügbarkeit* Available in iOS 2.0 and later.
Deklared in Uitextfield.h
Andere Tipps
Sie können verwenden textFieldShouldClear:
Delegieren Sie die Methode, um zu handhaben, wenn der Benutzer die Schaltfläche LEAR -Schaltfläche aufnimmt.