iOS

[rxSwift] Swift UItextView 에서 Placeholder설정, DidBeginEditing, DidEndEditing

D0HAN. 2021. 6. 3. 01:32

 

아주아주 간단한 기능들부터 rxSwift 로 하나씩 해보는 중이다. 

UItextView 에는 Placeholder기능이 없다. 

그래서 야매로 textView Placeholder기능을 구현해봤다. 

 

일단 textview가 클릭됐을때 아무 입력이 없는 상태에서도 DidBeginEditing이 호출되기때문에(처음알았다)

이 때 textView안의 내용이 placeholder의 내용과 같으면 지워주는 식으로 구현을 했다.

이렇게 기존에 회색글씨로 Placeholder 내용을 써두고 누르면 커서가 생김과 동시에 내용이 사라진다.

만약 클릭을 했다가 아무 내용도 쓰지 않은 채 다른 곳을 누르면 다시 placeholder가 채워져야 하기 때문에 

didEndEditing 으로 구현했다.

코드
func textSetUp(){
        
        textView.rx.didBeginEditing
            .subscribe(onNext: { [self] in
            if(textView.text == """
                        탈퇴 사유를 남겨주세요.
                        향후 서비스 개선을 위해 노력하겠습니다.
                        """ ){
                textView.text = nil
                textView.textColor = .gray5			//글자 색도 진한 색으로 바꿔줘야한다!
                
            }}).disposed(by: bag)
        
        textView.rx.didEndEditing
            .subscribe(onNext: { [self] in
            if(textView.text == nil || textView.text == ""){
                textView.text = """
                        탈퇴 사유를 남겨주세요.
                        향후 서비스 개선을 위해 노력하겠습니다.
                        """
                textView.textColor = .gray3		//다시 placeholder 글자색으로(연한색)
                
            }}).disposed(by: bag)
    }