4

iOS のキーボード拡張機能はUIInputViewControllerクラスのサブクラスでありtextDocumentProxy、基になるドキュメントとやり取りするためのプロパティがあります。このtextDocumentProxyオブジェクトは、自動大文字化タイプなど、ドキュメントのいくつかの重要な特性を公開します。問題は、基になるドキュメントがいつ変更されたかをキーボード拡張機能がどのように認識するかということです。

たとえば、メッセージ アプリで新しいメッセージを作成するためにタップすると、「To」フィールドはメッセージ本文の入力ボックスとは異なる入力特性を使用します。しかし、あるフィールドから別のフィールドにフォーカスを切り替えてもキーボードが消えないため、テキスト ドキュメント プロキシ オブジェクトはオンザフライで変更されます。キーボード拡張機能はそのような変化に気付くことができますか?

KVO を介してtextDocumentProxyとプロパティの両方を監視しようとしましたが、うまくいきません。[[self textDocumentProxy] autocapitalizationType]タイマーを使用してプロパティを確認するとautocapitalizationType、変更が明らかになりますが、明らかにポーリング ソリューションは避けたいと思います。

4

1 に答える 1

5

Myは、メソッドを持つプロトコルをUIInputViewControllerサポートしています。から、自分の持ち物と比較。2 つが異なる場合は、 を更新してから、 に基づいて GUI を更新します。UITextInputtextDidChangetextDidChangeself.textDocumentProxyself.currentTextProxyself.currentTextProxyself.textDocumentProxyUITextInputTraits

于 2014-11-13T02:32:31.470 に答える