【iOS】キーボードの開閉に応じて TextField の高さを自動で移動してくれる IQKeyboardManager ライブラリ【Swift】

2021年11月21日

IQKeyboardManager ライブラリ

iOSアプリでは TextField をタップすると、キーボードが下からニュルッと伸びてきます。


この際に、TextField の位置が画面の上側にあれば何も気にする必要はないですが、
下に配置していると入力エリアが隠れてしまいます。


このようなケースでは、本来ならプログラマがテキストフィールドの位置を自分で制御してあげる必要がありますが、この処理は意外と実装が面倒です。。

「テキストフィールドが隠れてしまう時は自動で位置を移動させたい・・・」

こんなプログラマのワガママを叶えてくれるライブラリが、「IQKeyboardManager」です。

このライブラリをプロジェクトに導入し、いくつかのプロパティを指定してあげるだけで、
テキストフィールドがちょうど見えやすい位置になるよう自動で制御されます。

本記事ではライブラリの導入手順と、
導入にあたっていくつかつまずいたポイントがあったため、その辺りを共有しております。

ライブラリ導入

ライブラリのリポジトリはこちらです。
ここではライブラリ管理ツールに Carthage を使っています。

Cartfile

ライブラリをビルド

トラブルシューティング

2021年11月時点では、IQKeyboardManager のバージョン「6.5.7」「6.5.8」だと以下のようなビルドエラーが出ていました。

このエラーが出る場合、私の環境では「6.5.6」のバージョンだと安定していたため、
Cartfileのバージョンを固定してビルドしました。

ライブラリをプロジェクトに導入

ライブラリをビルドすると、「IQKeyboardManager.xcframework」と「IQKeyboardManagerSwift.xcframework」が生成されます。


公式手順に記載されているように、Swiftのプロジェクトでは「IQKeyboardManagerSwift.xcframework」のみをプロジェクトに追加します。

コード

アプリ全体でキーボード開閉に応じてViewの高さを自動で調整させたい場合は、AppDelegateやSceneDelegateに数行のコードを記述するだけでライブラリの恩恵を享受できます。

たったこれだけです。

なお、「IQKeyboardManager.shared.enableAutoToolbar = false」の部分は別になくても良いお好みの設定ですが、私の環境ではこれがないと何故か以下のような実行時エラーが発生しておりました。

もし同じエラーが出ている方がいれば参考にしていただければ幸いです。

スポンサードリンク