ユーザが今どのキーボードを使っているか判断したい場合、次のように行います。
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"
を取得することができます。こちらの方がより正確に特定が可能です。
参考