2017-11-15 20 views
0

firstsecondtheardこれは私のコードですが、問題は、ユーザが第2 PROBは、私があまりにもテキストフィールドが空の場合、ボタンを有効にする方法

 override func viewDidLoad() { 
      handleTextField() 
     fullname.delegate = self 
     username.delegate = self 
     email.delegate = self 
     password.delegate = self 
    } 


     func handleTextField(){ 
       fullname.addTarget(self, action: #selector(SignupVC.textFieldDidChange), for: UIControlEvents.editingChanged) 
       username.addTarget(self, action: #selector(SignupVC.textFieldDidChange), for: UIControlEvents.editingChanged) 
       email.addTarget(self, action: #selector(SignupVC.textFieldDidChange), for: UIControlEvents.editingChanged) 
       password.addTarget(self, action: #selector(SignupVC.textFieldDidChange), for: UIControlEvents.editingChanged) 
      } 
      @objc func textFieldDidChange(){ 
       guard let username = username.text, !username.isEmpty, let email = email.text, !email.isEmpty, let fullname = fullname.text, !fullname.isEmpty, let password = password.text, !password.isEmpty else { 
        signupBtn.setTitleColor(UIColor.lightText, for: UIControlState.normal) 
        signupBtn.isEnabled = false 
        return 
       } 
       signupBtn.setTitleColor(UIColor.white, for: UIControlState.normal) 
       signupBtn.isEnabled = true 
      } 
彼の色を変更したいです を入力を開始した後、ボタンスタートが可能です

答えて

0

あなたはこのようなUITextFieldDelegate、実装する必要があります。

override func viewDidLoad() { 
     super.viewDidLoad() 
     fullname.delegate = self 
     username.delegate = self 
     email.delegate = self 
     password.delegate = self 

     signupBtn.isEnabled = false 
    } 

    func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) { 
     if reason == .committed { 
      //textFieldDidChange() 
     } 
    } 

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    if textField == username, let text = textField.text, !text.isEmpty { // your are typing the 2nd textfield 
     if let text = fullname.text, !text.isEmpty { // and the 1st textfield filled 
      signupBtn.isEnabled = true 
      signupBtn.setTitleColor(.green, for: .normal) 
     } 
    } 
    return true 
} 

    func textFieldDidChange() { 
     guard let username = username.text, !username.isEmpty, let email = email.text, !email.isEmpty, let fullname = fullname.text, !fullname.isEmpty, let password = password.text, !password.isEmpty else { 
      signupBtn.setTitleColor(UIColor.lightText, for: UIControlState.normal) 
      signupBtn.isEnabled = false 
      return 
     } 
     signupBtn.setTitleColor(UIColor.white, for: UIControlState.normal) 
     signupBtn.isEnabled = true 
    } 
+0

は、はい私は私のコードの男と間違って何も知らないが、私の質問をチェックアウト – mazenqp

+0

はい、今回は問題がshouldChangeCharact 'で解決することができますersIn range'デリゲート – ngbaanh

+0

どのようにうまくいくのですか?ボタンのタイプはユーザーの開始タイプの後で有効になります – mazenqp

関連する問題