WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
iOS
Swift
システム開発
[Swift]Xcode16でIQKeyboardManager8.0を使う
こんにちは、株式会社MIXシステム開発担当のBloomです。
以前紹介したIQKeyboardManagerのメジャーバージョンアップが2024年11月4日に公開されました。
今回はこれを導入する方法について、お仕事の中で得た知見を共有させていただきたいと思います。
CarthageによるIQKeyboardManagerの導入
以前と同様にCarthageを利用していきましょう。8.0への移行に際し、必要なライブラリが増えています。
github "hackiftekhar/IQKeyboardManager"
github "hackiftekhar/IQKeyboardToolbarManager"
Cartfileの編集が完了したらライブラリを導入します。今回も前回と同じくXCFrameworkを利用するため、コマンドは下記の形で実行してください。
carthage update --platform ios --no-use-binaries --use-xcframeworks
ビルドが完了したら、[General] -> [Targets] -> [Frameworks, Libraries, and Embeded Content]から必要な下記リストのフレームワークを指定し追加しましょう。
- Carthage/Build/IQKeyboardManagerSwift.xcframework
- Carthage/Build/IQKeyboardToolbar.xcframework
- Carthage/Build/IQTextView.xcframework
- Carthage/Build/IQKeyboardCore.xcframework
- Carthage/Build/IQKeyboardToolbarManager.xcframework
- Carthage/Build/IQKeyboardNotification.xcframework
- Carthage/Build/IQKeyboardReturnManager.xcframework
- Carthage/Build/IQTextInputViewNotification.xcframework
以前はIQKeyboardManagerSwift.xcframeworkのみで問題ありませんでしたが、現在はこれのみだとSIGABRTが発生します。
コードでIQKeyboardManagerを実装する
では、またコードで実装してみましょう。
import IQKeyboardManagerSwift
import IQKeyboardToolbarManager
import IQKeyboardToolbar
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.isEnabled = true
return true
}
}
少しプロパティ名が変わりましたが、有効化するまでの手順は変わりありません。
一方で今までIQKeyboardManagerを利用していた際に付属していたデフォルトのinputAccesoryViewを表示する方法は大きく変わっています。
import IQKeyboardManagerSwift
import IQKeyboardToolbarManager
import IQKeyboardToolbar
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.isEnabled = true
IQKeyboardToolbarManager.shared.isEnabled = true
IQKeyboardToolbarManager.shared.toolbarConfiguration.doneBarButtonConfiguration = IQBarButtonItemConfiguration(title: "完了")
return true
}
}
新たにIQKeyboardToolbarManagerを有効化する必要があり、ツールバーに関する設定もこちらのクラスへの設定で統合されています。
これでIQKeyboardManagerの8.0を導入することができました。良かったですね。