UITextField의 Text Input Traits

고라니·2023년 7월 24일
0

TIL

목록 보기
14/67

Text Input Traits

우리가 평소 사용하는 앱들에서 다양한 유형의 텍스트를 입력받는 것을 경험한 적이 있을것이다. 자동으로 대문자 변환, 비밀번호 숨기기, 이메일을 위한 '@'키가 포함된 키보드나 핸드폰 입력을 위한 넘버키보드 등 특정 유형의 키보드를 보여주는 경우들이 있다. 이 때 Text Input Traits가 주용한 역할을 한다. 텍스트 입력을 세분화 하여 제어할 수 있게 해주기 때문에 사용자 입력 경험을 향상시키는 데 중요한 역할을 한다.

UITextInputTraits

Text Input Traits는 사실 UITextInputTraits라는 프로토콜로 정의되어 있다.
사용자가 텍스트를 입력할 때 키보드의 동작과 모양을 구성하는데 사용되는 프로토콜로, UITextField, UITextView, 그리고 UISerachBar는 이 프로토콜을 구현하고 있다. (자동으로 지원) 이 프로토콜은 여러 가지 속성이 포함되어 있다.

UITextInputTraist의 속성들

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 속성에 대해 알아봤다. 많은 사용자들이 아이폰 설정에서 첫 번째로 변경하는 것은 대부분 자동 완성 기능을 끄는것이다. 자동 기능이 항상 우리의 의도에 맞게 작동하지 않아, 오히려 불편함을 주기 때문이다. 마찬가지로 위에서 본 여러 자동화 기능들도 오히려 사용자들에게 불편함을 줄 수 있다. 그렇기 때문에 상황에 따라 속성들을 적절하게 설정하는 것이 중요하다.

profile
🍎 무럭무럭

0개의 댓글