2
Help us understand the problem. What are the problem?

posted at

【Flutter】Androidの感覚で実装してiOSで起こした不具合

不具合発覚

iOSの端末で名前が入力できないとの問い合わせから判明しました。

調査

以前、showCupertinoModalPopup を使った際に、Focus と Cursor の挙動がおかしくなったことがあったので似たような問題かな?と思ったが違いました。

連絡をくれた方とやり取りすると、日本語が入力できないとのことだったのでキーボードの設定周りを中心に調査するようにしました。

原因

以下の条件で再現することがわかりました。

  • キーボードを絵文字と Gboard のような他社製キーボードのみにしている
  • TextField の inputTypeTextInputType.name を設定している

TextInputType.name を指定すると、iOS では keyboardTypenamePhonePad が設定されるのですが、他社製キーボードのみにしていると、該当のキーボードがないため日本語を入力するキーボードが選択できないため入力できなくなってしまっていました。

対応

inputType を TextInputType.name -> TextInputType.text に変更し、
連絡をくれた方には暫定的に標準のキーボードを一時的に追加してもらいました。

雑感

正直、iOS のバグじゃね?ってなりました。
Android の開発の際は android:inputType は意識的に設定するようにしてたので
TextInputType.name が原因で不具合になるとは思ってもいなかったわけです。

調べてみると、iOS のキーボードタイプに関するバグの記事は結構見つかります。

iOS を開発している人に聞いてみても、
email しか設定しない」
「ほぼ設定しない。email と numberPad は使うけど numPad も微妙に使えない。。。」
というような回答が。

確かに、TextInputType.number を指定した際、iOS では次へとかのアクションボタンが表示できなくて、色々実装したな。。。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?