우리가 평소 사용하는 앱들에서 다양한 유형의 텍스트를 입력받는 것을 경험한 적이 있을것이다. 자동으로 대문자 변환, 비밀번호 숨기기, 이메일을 위한 '@'키가 포함된 키보드나 핸드폰 입력을 위한 넘버키보드 등 특정 유형의 키보드를 보여주는 경우들이 있다. 이 때 Text Input Traits가 주용한 역할을 한다. 텍스트 입력을 세분화 하여 제어할 수 있게 해주기 때문에 사용자 입력 경험을 향상시키는 데 중요한 역할을 한다.
Text Input Traits는 사실 UITextInputTraits라는 프로토콜로 정의되어 있다.
사용자가 텍스트를 입력할 때 키보드의 동작과 모양을 구성하는데 사용되는 프로토콜로, UITextField, UITextView, 그리고 UISerachBar는 이 프로토콜을 구현하고 있다. (자동으로 지원) 이 프로토콜은 여러 가지 속성이 포함되어 있다.
UITextField의 attrubute Inspector을 보면 Text Input Traits 속성들을 볼 수 있다.
textContentType
텍스트 필드에서 예상되는 입력 유형 지정, 시스템이 사용자의 입력 양상을 파악하여 자동 완성과 같은 기능들을 적절하게 제공해준다. .password, .emailAddress, .URL, .phoneNumber, .username 등 다양한 값이 있다.
autocapitaliztaionType
사용자가 텍스트를 입력할 때 자동으로 대문자로 변환할지 지정한다. .sentences는 각 문장의 첫 글자를 대문자로 시작, .allCharacters는 모든 문자를 대문자로 만든다.
autocorrectionType
텍스트 필드에서 자동 수정 기능 활성화 여부 지정, 사용자가 오타를 입력할 때 시스템이 이를 자동으로 수정한다.
smartDashesType
하이픈(-)을 입력할 때 스마트 대시로 자동 변환될지 여부를 지정한다.
스마트대시?
텍스트의 문맥에 따라 다른 종류의 대시를 사용하는 것을 의미한다. 보통 하이픈은 단어들을 이어주는 역할을 하지만 스마트 대시의 en dash(–) 는 주로 날짜나 숫자 범위를 나타내고, em dash(—)는 문장 내에서 추가적인 정보를 제공할 때 사용하는데 smartDashesType을 통해 문맥에 따라 자동으로 스마트 대시를 자동으로 변환시켜줄 지 설정하는 것인듯.
smartInsertDeleteType
사용자가 텍스트를 삽입하거나 삭제할 때 스마트 삽입/삭제 기능이 활성화될지 여부 결정, 문맥에 따라 적절한 공백을 자동으로 추가하거나 제거한다.
smartQuotesType
사용자가 따옴표를 입력할 때 스마트 따옴표로 자동 변환될지 여부를 설정
스마트 따옴표?
일반 따옴표는 시작과 끝이 같음 ("") 하지만 스마트 따옴표를 사용하면 시작 따옴표(“)와 끝 따옴표(”)가 서로 다른 형태로 표현되며 문맥에 맞게 자동으로 적용해준다. 작은 따옴표도 마찬가지 이다.
spellCheckingType
입력된 텍스트에 대한 맞춤법 검사를 설정한다.
keyboardType
사용자에게 표시되는 키보드 유형을 결정한다. 예시가 많지만 자주 사용하니 한번 모두 확인해보겠다.
.default, .asciiCapable, .numbersAndPunctuation, .URL, .numberPad, .phonePad, .namePhonePad, .emailAddress, .decimalPad, .twitter, .webSearch 등의 옵션이 있다.
keyboardAppearance
키보드의 스타일을 제어한다. .default, .dark, .light 등을 제어
returnkeyType
리턴 키의 타입을 결정한다. "Go", "Search", "Next", "Continue" 등이 있다.
속성들 하단을 보면 체크 박스 속성이 있다.
Auto-enable Return Key
리턴 키가 자동으로 활성화 되는지 여부를 설정한다. .yes로 설정되면 사용자가 텍스트 필드에 텍스트를 입력하면 리턴 키가 자동으로 활성화 된다.
SecureTextEntry
입력한 텍스트를 보안 모드로 표시할지 여부를 설정. true로 설정되면, 사용자가 입력한 텍스트는 '토트( * )' 문자로 표시된다. 보통 우리가 많이보는 비밀번호 입력창이 대표적인 경우다.
let textField = UITextField()
// ContentType 설정
textField.textContentType = .emailAddress
// 자동 대문자 설정
textField.autocapitalizationType = .none
// 자동 수정 설정
textField.autocorrectionType = .no
// 스마트 대시 설정
textField.smartDashesType = .no
// 스마트 삽입/삭제 설정
textField.smartInsertDeleteType = .no
// 스마트 따옴표 설정
textField.smartQuotesType = .no
// 맞춤법 검사 설정
textField.spellCheckingType = .no
// 키보드 타입 설정
textField.keyboardType = .default
// 키보드 외관 설정
textField.keyboardAppearance = .default
// 리턴 키 타입 설정
textField.returnKeyType = .done
// 자동 리턴키 설정
passwordTextField.enablesReturnKeyAutomatically = false
// 텍스트 보안 설정
passwordTextField.isSecureTextEntry = false
UITextInputTraist 속성에 대해 알아봤다. 많은 사용자들이 아이폰 설정에서 첫 번째로 변경하는 것은 대부분 자동 완성 기능을 끄는것이다. 자동 기능이 항상 우리의 의도에 맞게 작동하지 않아, 오히려 불편함을 주기 때문이다. 마찬가지로 위에서 본 여러 자동화 기능들도 오히려 사용자들에게 불편함을 줄 수 있다. 그렇기 때문에 상황에 따라 속성들을 적절하게 설정하는 것이 중요하다.