[Swift] 現在開かれているキーボードを取得する


ユーザが今どのキーボードを使っているか判断したい場合、次のように行います。

let currentKeyboardName = NSArray(array: UITextInputMode.activeInputModes)
                              .filtered(using: NSPredicate(format: "isDisplayed = YES"))
                              .first
                              .flatMap{($0 as? UITextInputMode)?.value(forKey: "displayName") as? String}
print(currentKeyboardName)  //例:Optional("日本語ローマ字")

以上をUIApplication.keyboardDidShowNotificationなどのタイミングで行うと開かれているキーボードを取得することができます。
キーボードアプリでユーザがキーボードを有効化したかどうかの判定に使えるほか、相性の悪い特定のサードパーティ製キーボードを禁止するなどの処理が必要な場合に使えるかもしれません。
なお、"displayName"ではなく"identifier"を用いるとキーボードの"identifier"を取得することができます。こちらの方がより正確に特定が可能です。

参考