Verhindert, dass der Benutzer die Cursorposition auf UITextField setzt

8

Ich habe ein UITextField, das mit dem Storyboard erstellt wurde. Ich möchte dem Benutzer nicht erlauben, die Position des Cursors zu ändern und sie immer am Ende des Textes in das Textfeld zu halten.

Ich habe versucht, die Position des Cursors beim Touchdown-Ereignis zu ändern, aber wenn ich das Textfeld auswähle und dann die Position des Cursors durch erneutes Berühren des Textfelds ändere, wird die Position geändert:

%Vor%

Kennt jemand eine Lösung? Danke

    
MahdiS 07.05.2013, 12:29
quelle

6 Antworten

2

Ok, was Sie tun müssen, ist ein UITextField, das versteckt ist.

Fügen Sie das verborgene Textfeld zur Ansicht hinzu und rufen Sie dort findFirstResponder auf. Von Ihrer amountBoxTouchDown: Methode.

Nehmen Sie im Textfield-Delegaten den Text, den der Benutzer eingegeben hat, und fügen Sie ihn zu amountBox.text hinzu. Deaktivieren Sie auch userInteractionEnabled für das sichtbare mengeBox textField.

Dies erzeugt den gewünschten Effekt.

Sehen Sie sich den Beispielcode Link an.

    
Bonnie 07.05.2013, 12:38
quelle
12

Erstellen Sie einfach eine Unterklasse von UITextField und überschreiben Sie die Methode engstenPositionToPoint :

%Vor%

Jetzt kann der Benutzer den Cursor nicht mehr bewegen, er befindet sich immer am Ende des Feldes.

SWIFT:

%Vor%     
kas-kad 28.05.2014 19:02
quelle
2

Denken Sie in Ebenen und Steuerelementen als Werkzeuge, die Sie kombinieren können, um Funktionalität zu erreichen.

Wenn Sie einfach einen UIButton über einem UITextField platzieren und den Schaltflächentyp auf "Custom" ändern, können Sie alle Berührungsereignisse im Textfeld verhindern, z. B. den Cursor bewegen, Text auswählen, kopieren, ausschneiden und einfügen.

Standardmäßig ist eine benutzerdefinierte Schaltfläche transparent.

Erstellen Sie eine Aktion, sodass beim Berühren der Schaltfläche das Textfeld zum ersten Responder wird.

    
Marcus Adams 07.05.2013 13:09
quelle
0

Deaktivieren Sie alle Gestenerkenner in dem Textfeld, nachdem es zum Ersthelfer geworden ist. Dies ermöglicht es, die anfängliche Anzapfung zu empfangen, verhindert jedoch, dass der Benutzer mit dem Feld interagiert, während es der Ersthelfer ist. Dies hält das Systemverhalten davon aufrecht, den Cursor am Ende des Textes zu halten, ohne dass der Benutzer es überschreiben kann.

Fügen Sie in einer UITextField-Unterklasse Folgendes hinzu:

SWIFT 3.1:

%Vor%

Ändern Sie in Ihrem Storyboard die Klasse Ihres Textfelds in Ihre UITextField-Unterklasse.

    
skladek 15.06.2017 20:52
quelle
0

Erweiterung der @ kas-kad Lösung. Ich habe mit diesem

eine Unterklasse von UITextView erstellt %Vor%     
Chris Prince 01.12.2017 17:53
quelle
0

Wenn Sie daran interessiert sind, den Cursor immer am Ende des Textes zu halten, tun Sie Folgendes:

%Vor%     
kotyara 21.01.2018 19:56
quelle

Tags und Links