プログラミング[Swift4]複数のTextFieldがキーボードに隠れて入力できない時の対策2020年2月7日iOSアプリで、複数のTextFieldを持ったフォームを作る場面、よくありますよね。そんな時に、何も考えずにTextFieldを組んだらこうなっちゃったこと、ありませんか。TextFieldがキーボードで隠れるんすよ。Androidだと、入力部分を上にスライドさせてくれるんですが、iOSはそういう親切なあれはありません。自分で実装して、やり方をまとめてみました。9.2ソース:https://github.com/yheihei/ios/tree/master/TextFieldScrolleAndCloseこちらの記事は当初運営者メンバーの執筆でしたが現在は離れており、寄稿記事となっています。そのため当記事の情報アップデートにつきましては2020年1月をもって終了・サポート・内容についての問合せなどは受けておりません。記事内容を利用された際に生じた内容にも責任を負えませんのでご了承ください。ページの内容リンク完成図やり方ルートをScrollViewにするScrollViewの子にViewを置くTextFieldを下の方に配置ソース全文と解説ポイント完成図TextFieldを選択すると、画面がスクロールし、キーボードで隠れなくなる。どのTextFieldが選択されているかを見て、スクロール量を決めてスクロールしている。やり方ルートをScrollViewにするAutoLayoutの設定は下記。SafeAreaいっぱいに。ScrollViewの子にViewを置くViewをScrollViewの子に置いて、AutoLayoutの設定は、ScrollViewいっぱいに。HeightをSafeAreaと同じにしておく。適当に下の方に配置する。Keyを「Done」にしておく。後ほど、コードの中でキーボードの「Done」が押されたらtextFieldShouldReturnイベントを受けてキーボードを閉じるため。UIEdgeInsets.zero}}ポイントレイアウトはルートをScrollViewに、その下にViewを入れ、その下にようやくTextField。Heightが必要なのか謎)UITextFieldDelegateを用いて、textFieldDidBeginEditingでどのTextFieldが選択されたかのイベントを受けるキーボードが開いた時に、keyboardWillBeShownが呼ばれる。2で取得したTextFieldのY座標を取得し、scrollViewをどのぐらいスクロールさせるか決めるtextFieldShouldReturnで「Done」が押されたのを検知し、resignFirstResponderでキーボードを閉じるキーボードを閉じたら、keyboardWillBeHiddenが呼ばれ、3でスクロールした量を元に戻すやってみると簡単だけど、大変めんどくさいすね。Androidはこんなこと考えなくても良いのに。自動化を実現するAPIです。サンプルがまとまっていないので、APIの全パターンを下記記事でまとめています。自動化を実現するAPIです。サンプルがまとまっていないので、APIの全パターンを下記記事でまとめています。APIのsampleをPHPで書いてみた。全てのAPIを網羅している。BestWebSoft」をインストールすることで簡単に設置できます。綾fitあなたにフィットする情報を綾fitがまとめていきます。防災情報もアンテナ張ってます。