iPadOSでSplitView使用時のキー入力について

対応されたら個人的にとても嬉しいので投稿させて頂きます。

iPadでSplitView使用時に別のアプリにキーボードの入力コントロールが移行すると、Inkdropで再度入力を行おうとInkdrop本文をタップして文字を打つと、開いている別のアプリでキー入力がされてしまいます。
回避するには
Inkdrop記事のタイトル部をタップ→記事本文の任意の場所をタップ(&カーソル移動)→キー入力
の手順を踏む必要があります。

今回の現象はChromeのアドレスバーからコピーしたURLをInkdropにペーストしようとしたら起こりました。
Chromeの代わりにTwitterアプリを開いている場合にも起こりました。(Twitterアプリの検索バーやツイート入力ウィンドウに文字入力→Inkdrop本文タップ+キー入力)

利用環境

  • Platform: (iPadOS)
  • Platform version: (14.0.1)
  • App Version: (v4.0.1(78))
    iPad(6th Generation)
    Magic Keyboard(US),MX Keys(US)
    Magic Trackpad

・iPadの言語設定(General => Language & Region)は”English”
・iPadのキーボード設定(General => Keyboards => Hardware Keyboard)は以下となります。
English(US) → U.S.
Japanese - Romaji → U.S.
Japanese - Kana → Automatic

再現方法

  1. SplitViewでInkdropとChrome(Twitterなどでも可)アプリを同時に開きます。
  2. Inkdropで本文に何か文章を入力します
  3. Chromeのアドレスバーをタップし、文字が入力出来る状態にします。
  4. Inkdropの本文の任意の位置をタップして適当にキーを入力します。入力内容がInkdrop本文上ではなく、Chromeのアドレスバーに反映されます。

回避方法

  1. 『再現方法』の1-3までを行います。
  2. Inkdrop記事の「タイトル部分」をタップします。
  3. 次にInkdrop本文の任意の位置をタップし適当にキーを入力します。今度はInkdrop内に表示されているカーソルの位置に入力内容が反映されます。

Yugさん

こんにちは。詳細なご報告ありがとうございます。
今手元にiPadが無いので、また後日確認してご返信しますね。
エディタ部はWebViewになっているのですが、タップした時にカーソルは表示されますか?
カーソルがブリンクしているにも関わらず文字が入力されない場合は奇妙ですね。
iOS側のバグである可能性があります。

こんにちは。早速のご返信ありがとうございます。

エディタ部をタップした時、カーソルは表示されています。
文頭〜文末のどの位置をタップしても、タップした位置に正確にカーソルが表示されていますが、やはりキー入力すると直前に使っていたアプリ側に反映されるようです。

>iOS側のバグ
やはりその可能性も充分にありますよね…。
気長に待たせていただきます。

iPad Proにて再現を試みました。
しかしながらカーソルは正常に移り、別アプリからフォーカスを切り替えて文字入力が出来ました。
気になったのは、ChromeなどからInkdropのエディタ部へフォーカスを移す際に長押しが必要だった事です。
Yugさんとの環境の違いは、ソフトウェアキーボードで動作確認した事です。
ハードウェアキーボードでのみ発生する現象の可能性があり、その場合はiOS側の問題の可能性が高そうです。

その状態で、別アプリの方のカーソルは消えて、見た目にはフォーカスが移ったように見えるという事でしょうか。
なかなか興味深い現象ですね。
iOSはWebViewのcontenteditable属性のついた入力欄の取り扱いが甘いのかもしれません。

そうなると根本解決法として考えられるのは、WebViewベースのエディタ実装を捨ててネイティブ実装に切り替える事でしょう。
WebViewベースの実装にはこの他にもパフォーマンス面やAndroidで沢山問題を抱えている状況です。
前向きに検討しているところですが、解決には時間がかかる事をご了承ください。

ソフトウェアキーボードでの動作を試してみました。
こちらについてはcraftzdogさんと同じ挙動で、長押しによってフォーカスの切り替えができました。

上記場面について、ハードウェアキーボード操作時はカーソルが2箇所に表示されます(InkdropエディタとChromeのアドレスバー上)
ですので、ぱっと見どちらのアプリにフォーカスされているのか分かりません。

カーソルが2つに増えるタイミングですが、

再現方法の3.のタイミングでInkdropエディタ上のカーソルが消えず、それぞれのアプリに表示されるようになります。
回避方法の3.でInkdropのエディタが編集可能な状態に戻ると、カーソルはInkdrop上にだけ表示されるようになります。

補足が長くて申し訳ありません。何かの参考になればと補足させて頂きました。

解決にはかなり大がかりな変更が必要になりそうなのですね。
丁寧にご対応頂きましてありがとうございます。
幸い回避手段もあるので、今後も使っていきたいと思います!

なるほど、カーソルが2箇所表示されるんですね。面白い・・
カーソルが2つある状態というのはOS的にもおかしな状態なので、iOSのバグっぽいですね。

ひとまず長押しやYugさんの方法で当面は回避できそうですね。

iOS側の修正はあまり期待せずに、こちらで対処できることを前向きに検討して行きます!