【问题标题】:Detect Keyboard Language - Romaji vs Japanese检测键盘语言 - 罗马字与日语
【发布时间】:2020-01-15 02:32:48
【问题描述】:

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

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"。有没有更好的方法来检测设置了什么键盘,例如每个键盘的唯一标识符?

【问题讨论】:

  • 为什么?您的应用程序应该只关心它获得的输入,而不是该输入是如何生成的。请记住,键盘可以有多种实现,甚至是硬件键盘。并不是每个可以与您的程序一起使用的输入法都需要将自己标记为日语。在我看来,你正在尝试做的事情会导致一个让用户感到困惑的脆弱程序。
  • 这是一个教人们如何写日语的应用程序,因为它不像英语那么简单。

标签: swift


【解决方案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 以检查是否存在区分 RomanjiKana 的变量。

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 2019-07-08
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多