iOS) UITextField 가 비어있다면 UIButton 비활성화 시키기

1 minute read

UITextField 가 비어있다면 UIButton 비활성화 시키기

@IBAction func textFieldValueChanged(_ sender: UITextField) {
        if textField.text?.isEmpty == true {
            saveBtn.isEnabled = true
        } else {
            saveBtn.isEnabled = false
        }
    }
  • UITextFieldDelegate 를 활용해서 구현했다.
@IBOutlet weak var textField: UITextField!

override func viewDidLoad() {
        super.viewDidLoad()
     
        textField.delegate = self
    }

extension AddListViewController: UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        
        let text = (textField.text! as NSString).replacingCharacters(in: range, with: string)
        
        if !text.isEmpty {
            saveBtn.isEnabled = true
        } else {
            saveBtn.isEnabled = false
        }
        return true
    }
}

위의 메서드는 지정된 텍스트가 변경될 때 요청하는 것이다. 즉 text 로 설정한 값이 바뀌면 호출된다는 메서드이다. 이 메서드를 활용해서 text 의 값이 바뀔때마다 text 가 비었다면 saveBtn 를 비활성화시켜주었다.

하지만 UITextField 의 built-in clear button 을 눌러서 UITextField 가 비어지게 될 때는 인식하지 못했다.

UITextfield 의 celar button 을 눌렀을 때 버튼 비활성화

@IBOutlet weak var textField: UITextField!
@IBOutlet weak var saveBtn: UIButton!

        override func viewDidLoad() {
        super.viewDidLoad()
     
        textField.delegate = self
    }

extension AddListViewController: UITextFieldDelegate {
        func textFieldShouldClear(_ textField: UITextField) -> Bool {
        saveBtn.isEnabled = false
        return true
    }
}

유저가 built-in clear button 을 누르게 되면 호출되는 메서드이다. 이를 통해서 saveBtn 을 비활성화 해주었다.

출처

출처ㅣApple Developer Documentation

출처ㅣApple Developer Documentation

Categories:

Updated: