DuckDuckGo iOS アプリの「Find In Page(ページ内検索)」で入力文字の候補が選択できない問題を修正
DuckDuckGo の iOS アプリで「Find In Page(ページ内検索)」で日本語が入力できない現象があったので、原因を調べて修正した。
DuckDuckGo は iOS / Android 共にオープンソースなので、第三者でも実際にコードを動かして確認することができる。
https://github.com/duckduckgo/
問題の原因は、ページ内検索をする時に
- TextField に入力された文字で「ページ内検索」を実行する
- ページ内検索の結果を WebView に反映
- TextField に入力された文字を、再度 TextField に設定する(表示された検索結果と入力された文字を同期、確定)
ということになっていたので、このシーケンスでは、たとえば「鴨」をページ内検索したい場合
- 「か」と入力する。「か」でページ内検索を実行する
- 「か」のページ内検索を WebView に反映
- TextField に「か」を設定する
になるため
- 「か」の候補である「鴨」を選択できない
- 「かも」と続けて入力した時の候補である「鴨」を選択できない(「か」「も」でそれぞれ確定されるため)
という現象が発生していた。
最初は日本語の問題に見えていたが、強制的に入力文字が「確定」されてしまうため、「候補」が選べない問題だった。(つまり日本語以外にもこの問題は影響している)
https://github.com/duckduckgo/iOS/pull/608
この問題の修正を PullRequest を送って Merge された。
修正後
AppStore のレビューでこの改善に気づいている人がいて、よかったなと。。