Пользовательская реализация UITextInput не отображает предложения многоэтапного ввода
У меня есть обычай UITextInput
текстовый редактор Работает очень хорошо, за исключением многоступенчатого ввода через помеченный текст.
Моя помеченная область отображается правильно, и помеченный текст вставляется, но список кандидатов над клавиатурой пуст.
Например, вот японская (кана) клавиатура, показывающая предложения по стандартному UITextView:
А вот мой пользовательский редактор, отображающий тот же помеченный текст:
Я потратил несколько дней на устранение этой проблемы и обнаружил, что причина в частном занятии UIKeyboardImpl
возврате NO
для метода delegateSupportsCorrectionUI
Если я переопределить этот метод в категории на UIKeyboardImpl
и вернуться YES
вместо этого корректно отображаются предложения многоступенчатого ввода для моего текстового редактора. Однако это не устраняет основную причину проблемы (и ее нельзя использовать).
Я также очень внимательно посмотрел на пример кода Apple SimpleTextInput. Это реализует базовый текстовый редактор Core. SimpleTextInput правильно отображает предложения многоступенчатого ввода, однако я не могу найти единственное отличие в его реализации UITextInput
это заставляет это работать, и мой сломаться.
(На самом деле, я не могу "сломать" способность образца SimpleTextInput отображать многоступенчатый ввод. Это заставляет меня думать, что мой фокус на UITextInput
реализация является неправильным путем. И это совсем другое.)
1 ответ
Хорошо, это немного смущает. Я только сейчас заметил:
@property(nonatomic, readonly) UIView *textInputView
обсуждение
Представление, которое рисует текст и обеспечивает систему координат для всех геометрических значений в этом протоколе. (Обычно это экземпляр класса, принимающего UITextInput.) Если это свойство не реализовано, выбирается первое представление в цепочке респондента.
В документации.
Я тупо @synthesize
Это свойство и забыл об этом, то есть моя реализация UITextInput возвращала nil
textInputView
, Просто оставляя его невыполненным, выбирается первый вид из цепочки респондента, как описано, который предоставляет текстовой системе необходимую систему координат для обработки предложений автокоррекции и многоступенчатого ввода.
Это было после трех дней отладки. Теперь я чувствую себя глупо.