Пользовательская реализация UITextInput не отображает предложения многоэтапного ввода

У меня есть обычай UITextInputтекстовый редактор Работает очень хорошо, за исключением многоступенчатого ввода через помеченный текст.

Моя помеченная область отображается правильно, и помеченный текст вставляется, но список кандидатов над клавиатурой пуст.

Например, вот японская (кана) клавиатура, показывающая предложения по стандартному UITextView:

По умолчанию

А вот мой пользовательский редактор, отображающий тот же помеченный текст:

Я потратил несколько дней на устранение этой проблемы и обнаружил, что причина в частном занятии UIKeyboardImpl возврате NO для метода delegateSupportsCorrectionUI

Если я переопределить этот метод в категории на UIKeyboardImpl и вернуться YES вместо этого корректно отображаются предложения многоступенчатого ввода для моего текстового редактора. Однако это не устраняет основную причину проблемы (и ее нельзя использовать).

Я также очень внимательно посмотрел на пример кода Apple SimpleTextInput. Это реализует базовый текстовый редактор Core. SimpleTextInput правильно отображает предложения многоступенчатого ввода, однако я не могу найти единственное отличие в его реализации UITextInput это заставляет это работать, и мой сломаться.

(На самом деле, я не могу "сломать" способность образца SimpleTextInput отображать многоступенчатый ввод. Это заставляет меня думать, что мой фокус на UITextInput реализация является неправильным путем. И это совсем другое.)

1 ответ

Решение

Хорошо, это немного смущает. Я только сейчас заметил:

@property(nonatomic, readonly) UIView *textInputView

обсуждение

Представление, которое рисует текст и обеспечивает систему координат для всех геометрических значений в этом протоколе. (Обычно это экземпляр класса, принимающего UITextInput.) Если это свойство не реализовано, выбирается первое представление в цепочке респондента.

В документации.

Я тупо @synthesizeЭто свойство и забыл об этом, то есть моя реализация UITextInput возвращала niltextInputView, Просто оставляя его невыполненным, выбирается первый вид из цепочки респондента, как описано, который предоставляет текстовой системе необходимую систему координат для обработки предложений автокоррекции и многоступенчатого ввода.

Это было после трех дней отладки. Теперь я чувствую себя глупо.

Другие вопросы по тегам