4

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 プロパティdocumentContextBeforeInputdocumentContextAfterInputは、Notes.app テキストからの正しいテキストが含まれています。

UITextFieldが textDocumentProxy の「リスナー」になっているように見えますが、そうすべきではありません。

私は成功せずに試しました:

  • userInteractionEnabled = NO上の設定UITextField
  • resignFirstResponder上でUITextField
  • endEditing:YES上でUITextField
  • プロパティの変更を監視しtextDocumentProxyますが、同じオブジェクトを参照し続けます。

回避策は、別のキーボードを選択してから、自分のキーボードに戻ることです。その後、接続が復元され、すべてが正常に戻ります。(ユーザーが再度 UITextField をタップするまで)。

App Store で、同じ問題を抱えているカスタム キーボード アプリをいくつか見つけました。これは私にそれが解決できないと思うように導きました。ただし、問題なく動作し、ユーザーが問題なくテキスト フィールドを移動できるカスタム キーボード アプリも見つけました。

何か案は?

4

0 に答える 0