2017-08-06 81 views
1

我的代码不起作用,您可以指出最新的错误。我试图验证SNameInput中的用户输入,当输入无效时错误标签应该更改它的文本,并且当用户输入SNameInput时STitle应该更改它的文本并且它是有效的,谢谢!在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

您是否将textfield委托设置为'self'? –

+0

是你的委托方法吗? –

+0

你有奇怪的表达式,像(SNameInput:UITextField)SNameInput.isEqual(d)。另外,你的英语句子很难理解,因为你没有结束每句句子。 –

回答

2

可能性:你没editingDidEnd操作添加到您的SNameInput文本字段。

editingDidEnd:触摸留下它的边界在UITextField 目标结束编辑会话。

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 
    } 
}