[UIKit] 코드로 UITextField Placeholder 설정하기

Swiftios
avatar
2025.02.11
·
2 min read

현재 개발 중인 앱에 UITextFieldUITextView 를 한 화면에서 사용하고 있다. 둘 모두에 Placeholder를 적용했는데, UITextField 는 Attribute Inspector에서 Placeholder 옵션이 있기 때문에 쉽게 설정했고, UITextView이 방법을 통해 코드로 구현했다.

테스트를 하다보니 이슈를 하나 발견했는데,

  • UITextField 는 실제 입력이 이루어져야 Placeholder가 사라진다.

  • UITextView 는 입력창에 커서가 위치하면 Placeholder가 사라진다.

사소한 차이지만, 이 차이가 불편했기에 UITextField 의 Placeholder를 코드로 구현하여 동작 방식을 UITextView 와 통일하고자 한다.

해결 방안

  1. 우선 UITextField 의 Attribute Inspector에서 Placeholder 설정을 제거한다.

  2. textFieldDidBeginEditingtextFieldDidEndEditing 를 추가한다.

    func textFieldDidBeginEditing(_ textField: UITextField) {
        if textField.text == "Placeholder" {
            textField.text = ""
            textField.textColor = .black
        }
    }
    
    func textFieldDidEndEditing(_ textField: UITextField) {
        if textField.text?.isEmpty ?? true {
            textField.text = "Placeholder"
            textField.textColor = .lightGray
        }
    }







- 컬렉션 아티클