检测键盘语言-罗马字vs日语

时间:2020-01-14 16:38:53

标签: swift

因此,我试图检测用户的键盘设置为日语还是罗马字版本。当用户如下更改键盘时,我可以阅读:

NotificationCenter.default.addObserver(forName: UITextInputMode.currentInputModeDidChangeNotification, object: nil, queue: .main){ notification in
    if String(textField.textInputMode?.primaryLanguage ?? "") == "ja-JP"{
        self.hasCorrectKeyboard = true
    }else{
        self.hasCorrectKeyboard = false
    }
}

但是,这两个键盘都将返回"ja-JP"。是否有更好的方法来检测设置了哪些键盘,例如每个键盘的唯一标识符?

Romaji Keyboard Japanese Keyboard

1 个答案:

答案 0 :(得分:1)

https://developer.apple.com/library/archive/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

不确定这是否可以解决,因为我不熟悉日语,但是根据文档,有一种名为Japanese-RomanjiJapanese-Kana

https://developer.apple.com/documentation/uikit/uitextinputmode

在您检查语言为String(textField.textInputMode?.primaryLanguage ?? "") == "ja-JP"之后,再进行检查(textField.textInputMode?.activeInputModes),或者您可以尝试退出.activeInputModes来检查是否存在与Romanji不同的变量和Kana