gpt4 book ai didi

iOS 检测键盘布局(例如 QWERTY、AZERTY)

转载 作者:行者123 更新时间:2023-12-01 15:35:46 25 4
gpt4 key购买 nike

我正在 iOS 应用程序中构建自定义建议/自动更正功能。它必须检测意外的相邻按键,并将其与已知单词列表进行比较,以建议它认为用户打算键入的单词。

例如,如果自定义单词列表包含 cat , dog , monkey ,用户输入 cst ,应用程序可以确定最可能的词是 cat (因为 sa 键相邻)

QWERTY keyboard showing cst

这将适用于标准 QWERTY keyboard ,但是如果用户使用 AZERTY 键盘会发生什么?

enter image description here

为了使自动更正/建议可靠地工作,应用程序必须能够检测到正在使用的键盘布局。

在iOS中,可以获得 UITextInputMode 来自 UITextField 的对象.这个对象有一个 primaryLanguage (string) 属性,它将显示区域设置(例如 en-GB ),但这不包含足够的粒度来区分 English (Australia) QWERTYEnglish (Australia) AZERTY .在这两种情况下,primaryLanguageen-AU .

是否可以检测 iOS 中的键盘布局?

最佳答案

我一直无法找到解决此问题的干净方法。
也许这值得一张 TSI 票与 Apple 员工讨论。

我知道这不会是一个令人满意的答案,但我仍然想在这里为 future 的读者分享我的想法:

  • Private API of UITextInputMode :
    textField.textInputMode?.value(forKey: "identifierWithLayouts")
    这将返回一个类似 de_DE@sw=QWERTZ-German;hw=Automatic 的字符串您可以从中推断出键盘布局。
  • 用户默认值
    UserDefaults.standard.object(forKey: "AppleKeyboards")
    这将返回用户已安装的所有键盘的列表。在大多数情况下,这只会是一种语言(除了表情符号键盘)。
    例如:
    Optional(<__NSCFArray 0x600003b8e6c0>(en_US@sw=QWERTY;hw=Automatic,emoji@sw=Emoji))
    你也可以迭代 UserDefaults.standard.dictionaryRepresentation()并在值中搜索 QWERTZ/QWERTY/AZERTY。
  • 通过大量的手动工作,您可以编码 UITextInputModes在所有不明确的情况下(如 en_AU)转换为二进制数据。就像是NSKeyedArchiver.archivedData(withRootObject:textField.textInputMode, requiringSecureCoding: false)然后可用于比较用户 textInputMode 的二进制编码在运行时。
  • 关于iOS 检测键盘布局(例如 QWERTY、AZERTY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61249593/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com