iOS のキーボード拡張機能はUIInputViewController
クラスのサブクラスでありtextDocumentProxy
、基になるドキュメントとやり取りするためのプロパティがあります。このtextDocumentProxy
オブジェクトは、自動大文字化タイプなど、ドキュメントのいくつかの重要な特性を公開します。問題は、基になるドキュメントがいつ変更されたかをキーボード拡張機能がどのように認識するかということです。
たとえば、メッセージ アプリで新しいメッセージを作成するためにタップすると、「To」フィールドはメッセージ本文の入力ボックスとは異なる入力特性を使用します。しかし、あるフィールドから別のフィールドにフォーカスを切り替えてもキーボードが消えないため、テキスト ドキュメント プロキシ オブジェクトはオンザフライで変更されます。キーボード拡張機能はそのような変化に気付くことができますか?
KVO を介してtextDocumentProxy
とプロパティの両方を監視しようとしましたが、うまくいきません。[[self textDocumentProxy] autocapitalizationType]
タイマーを使用してプロパティを確認するとautocapitalizationType
、変更が明らかになりますが、明らかにポーリング ソリューションは避けたいと思います。