Wie bewegen Sie den cursor von einem Textfeld zu einem anderen automatisch in swift-ios-programmatisch?
func textFieldDidBeginEditing(textField: UITextField) {
scrlView.setContentOffset(CGPointMake(0, textField.frame.origin.y-70), animated: true)
if(textField == firstDigit){
textField.becomeFirstResponder()
secondDigit.resignFirstResponder()
}
else if(textField == secondDigit){
textField.becomeFirstResponder()
thirdDigit.resignFirstResponder()
}
else if(textField == thirdDigit){
//textField.becomeFirstResponder()
fourthDigit.becomeFirstResponder()
}
Ich bin mit vier Feldern für die OTP-Eintrag, in dem nur eine Zahl kann gleichzeitig eingegeben werden. Nach Eingabe der Nummer, die ich bewegen muss, damit der cursor automatisch zum nächsten textfield.
- github.com/hackiftekhar/IQKeyboardManager Bitte fügen Sie diese Bibliothek in Ihr Projekt mit Hülsen und fertig. Sie nicht brauchen, um code etwas hinzufügen oder etwas anderes. Diese Bibliothek verwaltet alle von selbst.
- sehen diese für die Hilfe : stackoverflow.com/questions/53665104/otp-textfields-swift/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Set textField delegieren und Beurteilung Ziel:
Wenn jetzt ändert sich der text ändern textField
Und schließlich, wenn der Benutzer mit der Bearbeitung beginnen klar textField
Lösung Für Swift 4
In Dieser Lösung gehen Sie zum nächsten Feld. Und Wenn Sie Drücken Sie Löschen, kommen Sie am vorherigen Textfeld.
Schritt 1: Set Selektor für Textfeld
Schritt 2: Nun werden Wir behandeln, bewegen nächste Textfeld und Löschen-text-Feld.
Wichtiger Hinweis: Vergessen Sie nicht Delegieren.
Erstens wir müssen das tag für die UITextField;
Hinweis: Die UITextField-dauert nur ein Zeichen im Zahlenformat, die im OTP-format.
Swift 3-code um den cursor von einem Feld zum anderen automatisch in OTP(One Time Password) - Felder.
Dies ist ähnlich wie UberEats hat Ihre otp-Felder. Sie können einfach kopieren Sie und fügen Sie diese in eine Datei und führen Sie es zu sehen, wie es funktioniert. Aber vergessen Sie nicht, fügen Sie die MyTextField Klasse oder es wird nicht funktionieren.
Wenn Sie wollen, dass es automatisch zu bewegen, um die nächste textfield nachdem Sie eine Zahl eingegeben wird, und noch in der Lage, sich rückwärts zu bewegen, wenn Sie die zurück-Taste gedrückt wird, WÄHREND das textField leer ist, das wird Ihnen helfen.
Wie das erste, was ich sagte, ist dies ähnliche, wie UberEats hat Ihre sms Textfeldern arbeiten. Sie können nicht nur nach dem Zufallsprinzip drücken Sie auf ein Textfeld und wählen Sie es. Mit diesem können Sie bewegen sich nur vorwärts und rückwärts. Die ux ist subjektiv, aber wenn Uber nutzt es die ux muss gültig sein. Ich sage, es ist ähnlich, weil Sie auch einen grauen Kasten Abdeckung der textField-so bin ich nicht sicher, was Los ist hinter ihm. Dies war der nächste, den ich bekommen konnte.
Ersten Ihrer werde müssen Unterklasse UITextField mit dieser Antwort zu erkennen, wenn Sie die backspace-Taste gedrückt wird. Wenn Sie die zurück-Taste gedrückt wird, Sie gehen, um zu löschen alles, was sich in diesem Bereich UND die vorherigen Feld wechseln zum vorherigen Feld.
Zweite Sie gehen, um zu verhindern, dass der Benutzer in der Lage, Sie zum auswählen der linken Seite des Cursors, sobald ein char ist innerhalb der textField -mit dieser Antwort. Überschreiben Sie die Methode in der gleichen Unterklasse, die aus dem ersten Schritt.
Dritten, die Sie brauchen, um zu erkennen, welche textField ist derzeit aktiv mit dieser Antwort
Vierten gehen zu müssen einige Kontrollen innerhalb
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
mit diesem YouTube-tutorial. Ich fügte hinzu, einige Dinge zu seiner Arbeit.Ich Tue alles programmgesteuert, so dass Sie können kopieren und fügen Sie den gesamten code in ein Projekt und führen Sie es
Erstellen Sie zuerst eine Unterklasse von UITextField und nennen es
MyTextField
:Zweite in der Klasse mit dem OTP-Feldern, legen Sie die Klasse, die die UITextFieldDelegate und die MyTextFieldDelegate, dann erstellen Sie eine Klasse, Eigenschaft und name es
activeTextField
. Bei welchem textField aktiv innerhalbtextFieldDidBeginEditing
legen Sie dieactiveTextField
zu. In viewDidLoad alle Textfelder zu verwenden, die sowohl die Delegierten.Stellen Sie sicher, dass die Ersten otpTextField AKTIVIERT ist und die zweite, Dritte und vierte otpTextFields sind ALLE zunächst DIASABLED
Dies ist aber unabhängig von der Antwort oben, aber wenn Sie brauchen, um hinzuzufügen, mehrere Zeichen auf jeder otpTextField dann befolgen Sie diese Antwort.
Objective c und Swift 4.2 bewegen Sie den cursor von einem Feld zum anderen automatisch in OTP(One Time Password) Felder
Hier bin ich unter einer view-controller
]Eins
Dann geben Sie die Tag-Werte für jede TextFiled.Diejenigen, die Verwandte Referenz-Bilder werden unten gezeigt
Geben Sie den tag-Wert für den ersten textfiled --> 1,2 ndTextfiled ---->2,3 rd TextFiled --->3 4 TextFiled---->4
Weisen Textfiled Delegierten und schreiben Sie folgenden code und sehen Sie die Magie
}
swift4.2 version code
**Anruf von UITextfieldDelegate Funktion und stellen Sie im nächsten Textfeld die first responder und keine Notwendigkeit zum hinzufügen von Ziel-und denken Sie daran, die Delegierten alle Textfelder in viewDidLoad **
Ich habe versucht, viele codes und schließlich das funktionierte für mich in Swift 3.0-Neueste [März 2017]
Die "ViewController" - Klasse sollen erbte die "UITextFieldDelegate" für die Herstellung dieser code arbeiten.
Fügen Sie den Text-Feld mit dem Richtigen Tag nuber und diese tag-Nummer wird verwendet, um die Kontrolle zu übernehmen, um entsprechende text-Feld basierend auf inkremental-tag-Nummer zugewiesen.
Im obigen code die "returnKeyType = UIReturnKeyType.neben" wo wird das Key pad return-Taste, um die Anzeige "Next" haben Sie auch andere Optionen, wie "Join/Go" usw., basierend auf die Anwendung, ändern Sie die Werte.
Diese "textFieldShouldReturn" ist eine Methode, UITextFieldDelegate gesteuert und hier haben wir das nächste Feld Auswahl auf der Grundlage der Tag-Wert Schrittweite
Verwenden textFieldShouldBeginEditing Methode
Hier war ich 4 TextField
für swift 3