2013-11-27 5 views
4

사용자 지정 UITextInput 기반 텍스트 편집기가 있습니다. 표시된 텍스트를 통한 다단계 입력을 제외하고는 매우 잘 작동합니다.사용자 지정 UITextInput 구현에 다단 입력 제안이 표시되지 않습니다.

표시된 영역이 올바르게 렌더링되고 표시된 텍스트가 삽입되지만 키보드 위의 후보 목록은 비어 있습니다.

:

Default Marked Text

그리고 여기가 동일한 표시 텍스트를 표시 내 사용자 정의 편집기입니다 : 예를 들어

, 여기에 표준 UITextView에 대한 제안을 보여주는 일본 (가나) 키보드입니다

enter image description here

나는이 문제를 디버깅하는 데 몇 시간을 보냈으며 fo 원인이 그때 다단 입력 제안 제대로 내 텍스트 편집기에 대해 표시, UIKeyboardImpl에 카테고리에서이 메소드를 오버라이드 (override) 대신 YES를 반환 할 경우 개인 클래스 UIKeyboardImpl이 방법 delegateSupportsCorrectionUI

에 대한 NO을 반환 싶게. 그러나이 문제의 근본적인 원인을 해결하지 않습니다 (그리고 그것은 사용할 수 없습니다).

저는 Apple의 SimpleTextInput 샘플 코드도 매우 자세히 검토했습니다. 이것은 기본 핵심 텍스트 편집기를 구현합니다. SimpleTextInput은 올바르게 다단식 입력 제안을 표시하지만, 작동하게하고 깨뜨리는 원인이되는 UITextInput 구현에서 한 가지 차이점을 찾지 못하는 것 같습니다.

사실, SimpleTextInput 샘플의 다단 입력 표시 기능을 "끊을"수 없기 때문에 UITextInput 구현에 초점을 맞추는 것이 잘못된 것으로 생각됩니다. 그 외의 다른 것입니다.)

답변

3

좋아, 이것은 약간 당황 스럽다. 나는 지금 막 발견 :

@property(nonatomic, readonly) UIView *textInputView 

토론

모두 텍스트를 그립니다이 프로토콜에 모든 기하학적 값을 좌표 시스템을 제공하는보기. 일반적으로 이것은 UITextInput 채택 클래스의 인스턴스입니다.이 속성이 구현되지 않은 경우 응답 체인의 첫 번째보기가 선택됩니다.

설명서에 포함되어 있습니다.

나는이 속성이 @synthesize이고 잊어 버렸습니다. 즉, 내 UITextInput 구현이 niltextInputView을 반환하고 있음을 의미합니다. 설명되지 않은 상태로두면 자동 응답 및 다단계 입력 제안을 처리하는 데 필요한 좌표계를 텍스트 시스템에 제공하는 설명 된 응답 체인에서 첫 번째보기를 선택합니다.

3 일간의 디버깅 후였습니다. 이제 나는 어리 석다.