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 UITextFieldDelegierte 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.

War es hilfreich?

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 die clearsOnBeginEditing Eigenschaft des Textfelds ist auf YES.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top