티스토리 뷰

음 우선 제목을 이렇게 지어도 되는지 모르겠지만 ,,

 

위의 동영상을 보시면 텍스트필드의 텍스트값이 변함에 따라 동시에 밑에 라인과 라벨이 생기는 걸 알 수 있습니다!

코드를 보면 (정규식도 사용을 해서 밑에 코드에 생략된 부분이 많습니다 ...)

    private func actionEmailTextField() {
        emailTextField.addTarget(self, action: #selector(SignUpFirstViewController.textFieldDidChange(_:)), for: UIControl.Event.allEditingEvents)
    }
    
    private func actionPasswordTextField() {
        passwordTextField.addTarget(self, action: #selector(SignUpFirstViewController.textFieldDidChange(_:)), for: UIControl.Event.allEditingEvents)
    }
    
    private func actionCheckingPasswordTextField() {
        checkingpasswordTextField.addTarget(self, action: #selector(SignUpFirstViewController.textFieldDidChange(_:)), for: UIControl.Event.allEditingEvents)
    }
    
    // MARK: @objc Function
    
    @objc func textFieldDidChange(_ textField: UITextField) {
        guard let password = passwordTextField.text else { return }
        if password.count < 8 {
            passwordErrorLabel.textColor = .Red
        }
        if textField == emailTextField {
            self.isEmailError = checkEmail()
            
            // 비밀번호
        } else if textField == passwordTextField || textField == checkingpasswordTextField {
            self.isPasswordError = checkPassword()
            self.isPasswordCheckError = checkPasswordCheck()
        }
        // 모두 true -> 시작하기 버튼색 바꾸기
        if isEmailError && isPasswordError && isPasswordCheckError {
            self.confirmButton.backgroundColor = UIColor.DeepYellow
            confirmButton.isEnabled = true
            confirmButton.isHidden = false
            
        } else {
            confirmButton.isHidden = true
            confirmButton.isEnabled = false
        }
    }

가장 크게 눈 여겨 봐야 할 부분은 아래 두가지 입니다.

emailTextField.addTarget(self, action: #selector(SignUpFirstViewController.textFieldDidChange(_:)), for: UIControl.Event.allEditingEvents)
@objc func textFieldDidChange(_ textField: UITextField) {
        guard let password = passwordTextField.text else { return }
        if password.count < 8 {
            passwordErrorLabel.textColor = .Red
        }
        if textField == emailTextField {
            self.isEmailError = checkEmail()
            
            // 비밀번호
        } else if textField == passwordTextField || textField == checkingpasswordTextField {
            self.isPasswordError = checkPassword()
            self.isPasswordCheckError = checkPasswordCheck()
        }
        // 모두 true -> 시작하기 버튼색 바꾸기
        if isEmailError && isPasswordError && isPasswordCheckError {
            self.confirmButton.backgroundColor = UIColor.DeepYellow
            confirmButton.isEnabled = true
            confirmButton.isHidden = false
            
        } else {
            confirmButton.isHidden = true
            confirmButton.isEnabled = false
        }
    }

@objc 부분에는 동작할 부분을 적어주고 이제 함수에서 호출해서 사용하면 됩니다 ..!

근데 중요한 부분은 

addTarget(self, action: #selector(SignUpFirstViewController.textFieldDidChange(_:)), for: UIControl.Event.allEditingEvents)

이 부분에서 for: 다음 부분에서 Event.allEditingEvents 를 작성해야지 원활하게 돌아갑니다 .>!

(모든 이벤트에 대해 수정을 하겠다 ! 라는 뜻입니다.)

 

틀린 부분이 있으면 말씀해주세요  ! 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함