【问题标题】:Autocorrection and Suggestion for custom keyboard自定义键盘的自动更正和建议
【发布时间】:2015-03-23 00:09:57
【问题描述】:

我想将自动更正和建议添加到我的自定义键盘。

Stack 上已经有several similar questions,但只有关于UILexicon 的说法,据我了解,它仅用于获取用户的快捷方式,并且无法访问 Apple 自动更正和建议库。

我也看到了some questions 关于UITextChecker 但不知道它是否可以访问Apple 的本机建议库?

可能有一些新的课程吗?

【问题讨论】:

    标签: ios objective-c custom-keyboard uilexicon uitextchecker


    【解决方案1】:

    我的键盘使用了四种不同的系统:

    1. 我有一个前 30,000 个单词的列表,按照最常用到最少使用的顺序排列。你可以为列表付费,我刚从大约 42,000 个中免费获得了一个,并对其进行了大量编辑。

    2. guessesForWordRange 由 Apple 提供。它会猜测与您输入的内容接近的单词。它做得相当好,但我不得不过滤掉一些东西。最高的猜测有时会有引号,但除此之外它效果很好。

    3. completionsForPartialWordRange 也由 Apple 提供。它将返回完整的单词,但按字母顺序排列,不按用法排序。它本身并没有多大好处,但它是对 1 和 2 的一个很好的补充。(如果这工作正常,则不需要 #1)

    4. 特殊情况。主要用于宫缩。当有人键入没有时,我希望它自动选择没有。所以我几乎把所有的宫缩都专门编进去了。

    所以我的文字建议和自动更正并不完美,但它做得不错。

    希望这会有所帮助。

    【讨论】:

    • 这是一个非常有帮助的答案,谢谢!当你提到前 3 万个单词时,我很好奇,这些单词是常见的拼写错误的单词,还是只是常用的英语单词。
    • 我刚刚做了前 30k 字,因为我的应用使用了自动完成功能。我使用guessesForWordInRange 来查找拼写错误的单词。
    • 我有一个小问题,在我的自定义键盘中,如何检测最近输入的单词?谢谢!
    • @BashirSidani - 我就是这样做的let proxy = textDocumentProxy as UITextDocumentProxy var wordsBeingTyped = NSString() wordsBeingTyped = proxy.documentContextBeforeInput! as NSString let range = NSMakeRange(0, (wordsBeingTyped).length) wordsBeingTyped.enumerateSubstrings(in: range, options: NSString.EnumerationOptions.byWords) { (substring, substringRange, enclosingRange, stop) -> () in self.lastWord = substring!
    猜你喜欢
    • 2012-03-01
    • 2015-11-02
    • 2018-02-19
    • 1970-01-01
    • 2012-01-09
    • 2015-04-03
    • 2015-06-24
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多