iosswiftuitextfielduitextviewdelegate

What main difference textFieldDidChange and shouldChangeCharactersIn method, the delegate of UITextFieldDelegate?


Can someone explain about when to use and how difference of them ?.


Solution

  • In Simple words textDidChange occurs when any text is typed in Textfield and you want to get text typed on TextField to check for validation or anything...

    func textDidChange(_ textField: UITextField) {
            guard let email = emailTextField.text, !email.isEmpty, email.isValidEmail() else {
                //Write your code here...
                return }
            guard let password = passwordTextField.text, !password.isEmpty else {
                //Write your code here..
                return }
            //Write your success code. 
        }
    

    And shouldChangeCharactersIn occurs event before any typed key is about to print in Textfield. So that you can varify that key and allow or restrict that key. Eg: If user enter space in Password Textfield you can restrict that key and space will never is printed in Textfield.

    In below code I am restricting space(" ") key in My Textfields.

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
               if range.location == 0 && string == " " {
                   return false
               }
               return true
           }