이번에 구현을 담당한 파트에서 여러줄의 텍스트를 입력하는 파트가 있었다
처음에 당연히 TextField
를 사용하려고 했다.
왜냐면 텍스트 입력하는 UI를 알고있는게 TextField
밖에 없었다.
그렇게 구현을 열심히 하던 와중에
텍스트필드는 입력이 한 줄 밖에 안된다는 사실을 뒤늦게 깨달았다..
검색을 해보니 여러줄을 입력하려면 TextView
라는 것을 사용해야 하더라
- Swift에서 TextView는 UIKit 프레임워크에 포함된 UI 컴포넌트로, 다중 줄 텍스트를 표시하고 편집할 수 있는 기능을 제공합니다.
- TextView는 TextField와 달리 스크롤이 가능하고 여러 줄의 텍스트를 입력할 수 있습니다.
- TextView는 placeholder 기능을 기본적으로 지원하지 않지만, 델리게이트 메서드를 활용하여 직접 구현할 수 있습니다.
UITextField
- 역할: 단일 행 텍스트 입력
사용 사례: 사용자 이름, 이메일, 전화번호 등 간단한 입력을 받을 때 사용- 기능
단일 행: 기본적으로 한 줄만 입력 가능
자리 표시자: 입력 전 안내 메시지(placeholder)를 표시
키보드 타입 설정: 숫자 패드, 이메일 패드 등 다양한 키보드 타입 설정 가능
입력 제한: 최대 문자 수 제한 가능
자동 수정: 자동 대문자화, 철자 수정 등의 기능 설정 가능
UITextView
- 역할: 다중 행 텍스트 입력
사용 사례: 메모, 댓글, 긴 텍스트 입력을 받을 때 사용- 기능
다중 행: 여러 줄 입력 가능
스크롤: 내용이 많을 경우 스크롤 가능
서식 지정: 텍스트 스타일 설정 (글꼴, 크기, 색상 등)
편집 가능/불가능: 편집 모드 전환 가능
텍스트 속성: 다양한 텍스트 속성 적용 가능 (NSAttributedString 사용)
둘 사이에 두드러지는 차이점은
단일 행 입력을 받느냐, 다중 행 입력을 받느냐에 있다
실제로 많은 텍스트를 입력해도 1줄로만 표현한다.
위는 텍스트필드, 아래는 텍스트뷰에 같은 내용을 작성한것이다.
텍스트 필드의 경우 내용이 많아도 한줄로만 표현하고, 내용이 많아지면 줄임 표시를 하는 반면 텍스트뷰는 내용이 많아지면 다음 줄로 넘어가서 작성을 하게된다
그리고 TextView의 경우 placeholder를 기본 속성으로 제공해주지 않는다
이 부분은 추후 따로 다뤄보겠다.
lazy var verseTextField: UITextView = {
let view = UITextView()
view.font = .systemFont(ofSize: 14)
/*
추가 설정 코드
*/
return view
}()
선언 자체는 TextView와 크게 다르지않다
가장 기본적인 예시코드를 가져왔다.
추가 설정 부분에 placeholder나 테두리 등 필요한 설정을 작성하면 된다
여태 TextField
만 있는 줄 알았는데 새로 공부해야할 소재를 찾았다.
TextField
가 여러줄 입력이 안되는 것을 미리 알았더라면
바로 다른 방법을 찾아봤을 텐데 기존에 알고 있던 UI요소들도 다시 한번
꼼꼼히 봐야겠다