2016-12-09 2 views
1

Ich habe ein UITextField, das in der Mitte ausgerichtet ist. Ich mag die Löschtaste zeigen, bei der Bearbeitung, so dass ich verwenden:UITextField clearButton justiere die Einfügung des Textfelds, wenn es erscheint

textfield.clearButtomMode = .whileEditing 

Das Problem ist, dass, wenn die Löschtaste angezeigt wird, den Rest des Inhalts in dem Textfeld nach links bewegt, und es ist sehr schrill für jemand, der tippt.

Hier ist eine Illustration:

enter image description here

Jede Ahnung, wie dies machen es nicht tun, oder die Löschtaste erscheinen, wenn das Textfeld ein Ersthelfer wird?

+0

können Sie versuchen, die Breite des Textfeldes zu erhöhen, indem die von der Breite der Löschtaste um die Verschiebung des Textes zu kompensieren. oder setze einfach den clearButtonMode auf .always –

+0

Mache deinen eigenen Clear-Button und füge ihn dann dem Textfeld bei 'didBeginEditting' hinzu, es ist absolut nicht so schwer, aber pass auf, dass die Bewegung nach links verhindert, dass Text mit diesem Button überlappt, und es ist normal – Tj3n

Antwort

1

Sie könnten clearButtonRect(forBounds:) überschreiben, um die Superimplementierung aufzurufen und dann die Größe der Schaltfläche "Löschen" speichern. Dann können Sie damit die Einfügungen des Textfelds in editingRect(forBounds bounds: CGRect) aktualisieren. Nehmen wir an, die Breite der Schaltfläche ist 10. Wenn Sie also links und rechts 10 Punkteinfügungen hinzufügen, bleibt der Text zentriert und es gibt keine Überlappung mit der Schaltfläche. Der einzige Nachteil ist, dass der Text aufgrund der Einfügungen auf dieser Seite nicht bis zum linken Rand des Feldes reichen kann.

https://developer.apple.com/reference/uikit/uitextfield/1619600-clearbuttonrect https://developer.apple.com/reference/uikit/uitextfield/1619589-editingrect

Verwandte Themen