iOS 8 キーボード拡張機能に を追加しUITextField
て、ユーザーがキーボード内の絵文字やその他の要素を検索できるようにしました。
たとえば Notes.app でユーザーが入力している場合、ユーザーはキーボード拡張機能の検索フィールドをタップして検索を開始します。タップすると、拡張機能は次のようにログに記録します。
-[UIKeyboardInputManagerClient handleError:forRequest:] は、エラー Domain=NSCocoaErrorDomain Code=4099 "The operation could not be completed. (Cocoa error 4099.)" (com という名前のサービスへの接続.apple.TextInput が無効になりました。) UserInfo=0x170276e00 {NSDebugDescription=com.apple.TextInput という名前のサービスへの接続が無効になりました。}
kbd クラッシュ ログを確認してください。- [UIKeyboardInputManagerClient handleError:forRequest:] 送信に 2 回連続して失敗した後、キーボード デーモンへの接続を閉じました
この後、ユーザーは Notes.app テキストをタップして編集に戻ります。これで、使用して textDocumentProxy に送信されたテキストは、Notes.app テキストではなくinsertText:
、キーボード拡張機能に引き続き送信されUITextField
ます。
デリゲート メソッドは、textDidChange:
メモ テキストをタップすると、引き続き呼び出されます。また、textDocumentProxys プロパティdocumentContextBeforeInput
にdocumentContextAfterInput
は、Notes.app テキストからの正しいテキストが含まれています。
UITextField
が textDocumentProxy の「リスナー」になっているように見えますが、そうすべきではありません。
私は成功せずに試しました:
userInteractionEnabled = NO
上の設定UITextField
resignFirstResponder
上でUITextField
endEditing:YES
上でUITextField
- プロパティの変更を監視し
textDocumentProxy
ますが、同じオブジェクトを参照し続けます。
回避策は、別のキーボードを選択してから、自分のキーボードに戻ることです。その後、接続が復元され、すべてが正常に戻ります。(ユーザーが再度 UITextField をタップするまで)。
App Store で、同じ問題を抱えているカスタム キーボード アプリをいくつか見つけました。これは私にそれが解決できないと思うように導きました。ただし、問題なく動作し、ユーザーが問題なくテキスト フィールドを移動できるカスタム キーボード アプリも見つけました。
何か案は?