Text view 잘 사용하기

안녕하세요. 닥터솔저입니다. 다들 사용자 입력을 받는 text view나 text field를 많이 사용하실 것 같은데요! 도움이 됬으면 좋겠습니다. 아래 코드는 textview기준 이지만, 아마 텍스트 필드도 비슷한 함수가 있을것 같아요!

기본 데이터 설정

초기 값을 회색으로 주었습니다.

func initailize_textview(){
        Money.textColor = UIColor.gray
        Money.text = "월적립액(원)"
        Money.textAlignment = NSTextAlignment.center
        Ratio.textColor = UIColor.gray
        Ratio.text = "이율"
        Ratio.textAlignment = NSTextAlignment.center
        Month.textColor = UIColor.gray
        Month.text = "적금기간(개월)"
        Month.textAlignment = NSTextAlignment.center
    }

엔터키를 누르면 입력 완료하기

 
    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        if text == "\n" {
            textView.resignFirstResponder()
            return false
        }
        return true
    }

입력을 시작할때 함수

입력을 시작할 때, 기존에 들어있던 값을 없애주고, 색상을 변경 해줍니다.

func textViewDidBeginEditing(_ textView: UITextView) {
        textView.textColor = UIColor.black
        textView.text = ""
        self.activeTextView = textView
    }

입력을 끝냈을 때 함수

저희는 텍스트뷰가 여러개 있어서, 각각 텍스트뷰 별로, 조건문을 걸어서 어떤 텍스트뷰인줄 파악한 다음에, 뒤에 string을 붙여줍니다.

func textViewDidEndEditing(_ textView: UITextView) {
       // print(textView.accessibilityIdentifier!)
        if textView == self.Money{
            Moneytmpstring = Money.text
            if let MoneyInt = Int64(Money.text!){
                 Money.text =  makemoneyform(Money:MoneyInt) + "원"
            }
            if Moneytmpstring == ""{
                Money.textColor = UIColor.gray
                Money.text = "월적립액(원)"
                Money.textAlignment = NSTextAlignment.center
            }
        }
        if textView == self.Month{
            Monthtmpstring = Month.text
            if let MonthInt = Int64(Month.text!){
                 Month.text =  makemoneyform(Money:MonthInt) + "개월"
            }
            if Monthtmpstring == ""{
                Month.textColor = UIColor.gray
                Month.text = "적금기간(개월)"
                Month.textAlignment = NSTextAlignment.center
            }
        }
        if textView == self.Ratio{
            Ratiotmpstring = Ratio.text
            if let RatioInt = Int64(Ratio.text!){
                 Ratio.text =  makemoneyform(Money:RatioInt) + "%"
            }
            if Ratiotmpstring == ""{
                Ratio.textColor = UIColor.gray
                Ratio.text = "이율"
                Ratio.textAlignment = NSTextAlignment.center
            }
        }
    }

실제 어떻게 동작하는지는, 아래 영상을 보시면 이해가 가실 거예요!
동영상

좋아요 5

하나의 문장에서 다양한 크기와 색상의 텍스트를 표시하는 방법이네요~!

:clap::clap::clap:

좋아요 1

범용적으로 사용되는 TextView를 자세하게 다룬 것 같습니다!!
앞으로 코더스하이에 이런 다양한 정보교류가 활발하게 되었으면 좋겠습니다~~ ㅎㅎ

좋아요 2

@wjd8637 좋은 정보 감사합니다!!
적용 해보고 싶네요 ㅎㅎㅎ

좋아요 1