DuckDuckGo iOS アプリの「Find In Page(ページ内検索)」で入力文字の候補が選択できない問題を修正

DuckDuckGo Privacy Browser

DuckDuckGo Privacy Browser

DuckDuckGoiOS アプリで「Find In Page(ページ内検索)」で日本語が入力できない現象があったので、原因を調べて修正した。

DuckDuckGoiOS / Android 共にオープンソースなので、第三者でも実際にコードを動かして確認することができる。

https://github.com/duckduckgo/


問題の原因は、ページ内検索をする時に

  1. TextField に入力された文字で「ページ内検索」を実行する
  2. ページ内検索の結果を WebView に反映
  3. TextField に入力された文字を、再度 TextField に設定する(表示された検索結果と入力された文字を同期、確定)

ということになっていたので、このシーケンスでは、たとえば「鴨」をページ内検索したい場合

  1. 「か」と入力する。「か」でページ内検索を実行する
  2. 「か」のページ内検索を WebView に反映
  3. TextField に「か」を設定する

になるため

  • 「か」の候補である「鴨」を選択できない
  • 「かも」と続けて入力した時の候補である「鴨」を選択できない(「か」「も」でそれぞれ確定されるため)

という現象が発生していた。

最初は日本語の問題に見えていたが、強制的に入力文字が「確定」されてしまうため、「候補」が選べない問題だった。(つまり日本語以外にもこの問題は影響している)


https://github.com/duckduckgo/iOS/pull/608

この問題の修正を PullRequest を送って Merge された。


f:id:daisuke-t-jp:20200918091211p:plain:w600

修正後
AppStore のレビューでこの改善に気づいている人がいて、よかったなと。。