https://developer.apple.com/documentation/uikit/uiinputviewcontroller
"The primary view controller for a custom keyboard app extension."
커스텀 키보드 앱 확장을 위한 주요 뷰 컨트롤러입니다.
@MainActor class UIInputViewController : UIViewController
커스텀 키보드를 생성하려면 우선 UIInputViewController
클래스를 서브클래싱한 뒤, 서브클래스의 inputView
속성에 키보드의 UI를 추가해야 합니다. Xcode에서 Custom Keyboard 타깃 템플릿을 선택해서 커스텀 키보드를 시작할 수 있습니다.
커스텀 키보드는 아래 방법으로 사용자 입력 이벤트에 응답할 수 있습니다.
textDocumentProxy
속성에 insertText(_:)
메소드를 호출해서, 현재 텍스트 입력 객체에 대한 입력 지점에 unattributed NSString
객체 형식으로 텍스트를 추가합니다. 이 속성은 UIKeyInput
프로토콜에 따르는 것을 통해 해당 메소드를 제공합니다.textDocumentProxy
속성에 deleteBackward()
메소드를 호출함으로써 수행합니다.advanceToNextInputMode()
메소드를 호출해서 사용자가 활성화한 다른 키보드로 변경합니다.dismissKeyboard()
메소드를 호출해서 키보드를 해제합니다.textDocumentProxy
속성인 documentContextBeforeInput
및 documentContextAfterInput
을 읽음으로써 입력 지점 주변에 텍스트의 컨텍스트를 가져옵니다. 현재 텍스트 입력 객체가 비어있는지 확인하려면, textDocumentProxy
속성에 hasText
메소드를 호출해야 합니다. 키보드로부터 문서에 컨텍스트에 민감한 출력을 제공하기 위해, 사용자 입력을 신경쓰면서 텍스트의 컨텍스트를 사용할 수 있습니다.
입력 뷰 컨트롤러는 UITextInputDelegate
프로토콜을 따름으로써 문서 컨텐트 및 입력 지점 위치에 응답할 수 있도록 해줍니다.
적합한 키보드 레이아웃을 제공하려면 현재 텍스트 입력 객체의 UIKeyboardType
속성에 응답해야 합니다. 지원하는 각 키보드 타입 특성에 맞추려면, 그에 맞게 주요 뷰의 컨텐츠를 변경시켜야 합니다.
커스텀 키보드 생성에 대한 더 많은 내용은 App Extension Programming Guide의 Custom Keyboard를 읽으시기 바랍니다.
각각의 렉시컨 엔트리 객체에 있는 용어 쌍의 읽기 전용 배열이며, 커스텀 키보드를 위한 것입니다.
https://developer.apple.com/documentation/uikit/uilexicon
https://velog.io/@panther222128/UILexicon
렉시컨 객체 내에서 사용 가능한 읽기 전용 용어 쌍이며, 커스텀 키보드를 위한 것입니다.
https://developer.apple.com/documentation/uikit/uilexiconentry
https://velog.io/@panther222128/UILexiconEntry