2017-08-06 9 views
1

私のコードは機能しません。何が間違っているのかを指摘できますか?私はSNameInputでユーザー入力を検証しようとしています。エラーラベルは、入力が有効でないときにテキストを変更し、ユーザーがSNameInputに入力したときにそのテキストを変更する必要があります。迅速なテキスト入力の検証

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

テキストフィールド代理人に「self」を設定しましたか? –

+0

は、??という名前のデリゲートメソッドです –

+0

(SNameInput:UITextField)SNameInput.isEqual(d)のような奇妙な表現があります。また、英語の文章は、各文章をその文章で終わらせないので、理解するのが非常に難しいです。 –

答えて

2

可能性:あなたはSNameInputテキストフィールドにeditingDidEndアクションを追加しませんでした。

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 
    } 
} 
関連する問題