2016-12-10 2 views
2

Ich suche nach einer Möglichkeit, Zeichen im Textfeld zu minimieren. Da das Textfeld für die Eingabe des Benutzernamens dient, möchte ich die Eingabe von 4 Zeichen auf maximal 30 Zeichen festlegen. Zuerst habe ich textfield shouldChangeCharactersIn gemacht, um maximale Zeichen im Textfeld zu setzen. Der Code sieht gut aus, aber das Problem, wenn ich Benutzer machen möchte, wenn das Textfeld für den Benutzernamen weniger als 4 Zeichen hat, gibt die App einen Fehler oder eine falsche Antwort zurück.Wie setze ich Textfeld minimale Zeichen auf swift 3

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 

let currentString = usernameTextField.text!.characters.count ?? 0 
     if (range.length + range.location > currentString) { 
      return false 
     } 
     let newLength = currentString + string.characters.count - range.length 
     return newLength <= 30 
    } 

Irgendwelche Hilfe?

Antwort

1

Ich würde die Delegiertenmethode textFieldShouldEndEditing(_:) implementieren. Wenn die aktuelle Länge zu kurz ist, geben Sie false zurück und legen Sie optional eine Art Meldung/Indikator vor, damit der Benutzer weiß, was falsch ist.

Ich würde auch textField(_:shouldChangeCharactersIn:replacementString:) aktualisieren, um zu überprüfen, ob die neue Länge zu kurz ist. Ist dies der Fall, deaktivieren Sie die Schaltfläche "Speichern" oder eine andere geeignete Benutzeroberflächenkomponente, damit der Benutzer weiß, dass er etwas zu reparieren hat.

1
func textFieldShouldReturn(textField: UITextField) -> Bool { 
    let fieldTextLength = textField.text!.characters.count 

    if fieldTextLength < 4 || fieldTextLength > 30 { 
     //do something about it 
    } 
    self.view.endEditing(true) 
    return true 
} 

Ihr Problem am Ende nicht wirklich verstanden, aber das sollte es tun!

+0

Das Problem ist, wenn jeder Benutzer usernameTextField kleiner als 4 und größer als 30 Zeichen gibt es gibt ihm eine falsche. Ich habe den letzten Teil (größer als 30 Zeichen) gemacht, aber ich konnte keine Lösung für weniger als 4 Zeichen finden – user2508528

+0

Dies ist nicht der richtige Ansatz. Dieser Code ermöglicht es weiterhin, die Tastatur zu schließen, auch wenn das Textfeld zu kurz oder zu lang ist. – rmaddy

Verwandte Themen