안녕하세요. 닥터솔저입니다. 다들 사용자 입력을 받는 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
}
}
}
실제 어떻게 동작하는지는, 아래 영상을 보시면 이해가 가실 거예요!
동영상