Blog スタッフブログ

iOS Swift システム開発

[Swift]Xcode16でIQKeyboardManager8.0を使う

Swift

こんにちは、株式会社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を導入することができました。良かったですね。

参考文献

IQKeyboardManager – GitHub