스토리보드에 텍스트 필드를 만들고 코드와 연결한다. 스토리보드를 쓰지 않는다면 코드로 직접 만든다. 이 텍스트필드는 CustomTextField 클래스이다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var CustomTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
}
UITextInputTraits 프로토콜에서 Keyboard Type에서는 한국어를 설정할 수 없다. 그러나 텍스트 필드에 UITextInputMode를 override 하면 한국어가 뜨도록 변경할 수 있다. UITextInputMode의 activeInputModes는 현재 활성화된 텍스트 입력 모드들을 배열 형태로 반환한다. 설정에서 유저가 한국어, 영어(미국), 이모지 키보드를 설정했다면 activeInputModes 배열의 모드의 각각 primaryLanguage는 ["ko-KR", "en-US", "emoji"] 이다. primaryLanguage가 "ko-KR"와 일치하는 경우(한국어 키보드가 있는 경우)에 textInputMode를 해당 모드로 설정하면 한국어 키보드가 나온다.
import UIKit
class CustomTextField: UITextField {
private func getKeyboardLanguage() -> String? {
return "ko-KR"
}
override var textInputMode: UITextInputMode? {
if let language = getKeyboardLanguage() {
for inputMode in UITextInputMode.activeInputModes {
if inputMode.primaryLanguage! == language {
return inputMode
}
}
}
return super.textInputMode
}
}