Расширения клавиатуры в iOS являются подклассами класса UIInputViewController
и имеют свойство textDocumentProxy
для взаимодействия с базовым документом. Объект textDocumentProxy
раскрывает некоторые важные черты документа, такие как тип автокапитализации. Вопрос в том, как известно расширение клавиатуры при изменении базового документа?Как расширение клавиатуры знает, что прокси-сервер документа изменился?
Например, когда я использую новое сообщение в приложении «Сообщения», поле «Кому» использует разные входные признаки, чем поле ввода тела сообщения. Но поскольку клавиатура не исчезает при переключении фокуса с одного поля на другое, объект прокси-объекта текстового документа изменяется «на лету». Может ли расширение клавиатуры заметить такое изменение?
Я пробовал смотреть как объекты textDocumentProxy
, так и [[self textDocumentProxy] autocapitalizationType]
через KVO, но это не работает. Проверка свойства autocapitalizationType
с использованием таймера показывает изменение, но, очевидно, я бы хотел избежать опроса.
Спасибо! Я полностью пропустил 'UITextInputDelegate'. – zoul
В IOS 10 это не работает. Похоже, что адрес памяти textDocumentProxy никогда не изменяется, и они просто заменяют поле ввода за кулисами. Вы нашли решение, которое все еще работает? –