2017-08-06 2 views
1

Mein Code funktioniert nicht, können Sie darauf hinweisen, was falsch ist. Ich versuche, Benutzereingabe in SNameInput zu validieren, Fehlerbeschriftung sollte seinen Text ändern, wenn die Eingabe nicht gültig ist, und STitle sollte seinen Text ändern, wenn der Benutzer in SNameInput eingegeben wird, und es ist gültig, danke!Validieren von Texteingaben in swift

func textFieldDidChange(SNameInput: UITextField) { 
     let d = "" 
     if (SNameInput.isEqual(d)||(SNameInput.text?.characters.count)! >= 21) { 
      errorLabel.text = "Name has to be a t least 1 character and not longer than 20"} 
     else{ errorLabel.text = "" 
      Stitle.text = SNameInput.text} 
    } 
+0

Bitte benutzen Sie Textfeld Delegierter 'self' eingestellt? –

+0

ist Ihre Delegate-Methode aufgerufen ?? –

+0

Sie haben seltsame Ausdrücke wie (SNameInput: UITextField) SNameInput.isEqual (d). Auch Ihre englischen Sätze sind sehr schwer zu verstehen, da Sie nicht jeden Satz mit dem Punkt beenden. –

Antwort

2

Möglichkeit: Sie nicht editingDidEnd Aktion zu Ihrem SNameInput Textfeld hinzugefügt haben.

editingDidEnd: eine Bearbeitungssitzung in einem UITextField Objekt Ein Hauch endet durch seine Grenzen zu verlassen.

override func viewDidLoad() { 
    super.viewDidLoad() 

    SNameInput.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingDidEnd) 
} 

@IBAction func textFieldDidChange(_ sender: UITextField) { 
    guard let string = sender.text else { return } 

    if (string.isEmpty || string.characters.count >= 21) { 
     errorLabel.text = "Name has to be a t least 1 character and not longer than 20" 
    } 
    else{ 
     errorLabel.text = "" 
     Stitle.text = string 
    } 
} 
Verwandte Themen