Ich habe 4 UITextFields
in einem UIView
wie folgt aus:automatische Umschaltung zwischen UITextFields mit Swift
jeweils UITextField
begrenzt auf 4 Zeichen. Ich möchte eine automatische Umschaltung zwischen UITextFields
mit Anzahl Zeichen von jedem UITextField
implementieren.
i verwenden shouldChangeCharactersIn
zur Begrenzung Zeichen:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let maxLength = 4
var newString = String()
let currentString: NSString = textField.text! as NSString
newString = currentString.replacingCharacters(in: range, with: string)
return newString.length <= maxLength
}
und das ist mein Schalt implementieren:
func textFieldDidChange(_ textField: UITextField){
let text = textField.text
if text?.utf16.count == 4 {
switch textField {
case firstPartTextField:
secondPartTextField.becomeFirstResponder()
case secondPartTextField:
thirdPartTextField.becomeFirstResponder()
case thirdPartTextField:
fourthPartTextField.becomeFirstResponder()
default:
break
}
}
}
mein Problem ist, Schalter zur vorherigen UITextField
Texte zu löschen, kann ich nicht die Rücktaste Ereignis erkennen, wenn UITextField
ist leer.
(1) [Nicht alle Kreditkarten sind 16-stellig lang] (http://stackoverflow.com/a/19161529/224671) (2) Vielleicht könnten Sie [existing ] (https://github.com/3lvis/FormTextField) [Bibliotheken] (https://stripe.github.io/stripe-ios/docs/Classes/STPPaymentCardTextField.html) statt eigene zu erfinden. – kennytm
Versuchen Sie diese Antwort, das funktionierte für mich http://Stackoverflow.com/a/39483754/6245319 –
Ich persönlich mag es nicht, eine Nummer in 4 separate Textfelder eingeben :( – muescha