Keyboard Extensionの収容アプリには「有効化したら画面遷移する」という挙動を示すものがあります。
この動作は非常に単純で、まず次のような関数を定義します。
func isKeyboardActivated() -> Bool {
let bundleName = "hogehoge" //自分のKeyboard ExtensionのBundleIDを指定する。
guard let keyboards = UserDefaults.standard.dictionaryRepresentation()["AppleKeyboards"] as? [String] else{
return true
}
return keyboards.contains(bundleName)
}
"AppleKeyboards"
というキーで、ユーザが有効化しているキーボードのBundleIDを全て取得できるので、その中に含まれているか確かめればOKです。
あとはこの関数を「バックグラウンドから復帰したタイミング」などで呼んであげれば有効化されたかチェックができます。
ただ、今のところ「どのキーボードが開かれているか」を取得できていません。ご存知の方がいらっしゃったら教えていただきたいです。
開かれているキーボードの取得方法がわかりました。「[Swift] 現在開かれているキーボードを取得する」をご覧ください。