UITextView UITextField 차이

TextField는 placeholder를 사용할 수 있으나 TextView는 안되는것을 알게 되어 두 컴포넌트의 차이에 대해 알아보고자 정리하게 되었다.

UITextView

공식문서를 살펴보면

A scrollable, multiline text region

1줄 이상으로 이루어진 스크롤 가능한 텍스트 영역
placeholder는 제공하지 않기 때문에 직접 구현해야 한다.

placeholder 구현 방법

UITextView는 UITextViewDeleagate 프로토콜을 채택하고 있다.
그 중 textViewDidBeginEditing method를 사용해서 구현해보자.

// init 시 상태를 lazy로 지정
private lazy var textView: UITextView = {
    let tv = UITextView()
    tv.text = "입력하세요.."
    tv.textColor = .secondaryLabel
    tv.delegate = self
    return textView
}()

init 시 상태를 lazy로 지정해주면서 layout 세팅을 진행하였다.

textViewDidBeginEditing

Tells the delegate when editing of the specified text view begins.

Optional 설정으로 textView의 수정이 일어나면 실행되는 메서드

extension UploadViewController: UITextViewDelegate {
    func textViewDidBeginEditing(_ textView: UITextView) {
        guard textView.textColor == .secondaryLabel else { return }
        textView.text = nil
        textView.textColor = .label
    }
}

textColor가 .secondaryLabel라는 기본값으로 세팅되어 있으면 return 시키고, 아니라면 text를 비우고 Color도 검정색으로 바꾸어준다.

UITextField

Leave a comment