在 iOS 8 键盘扩展中实现自动更正

Posted

技术标签:

【中文标题】在 iOS 8 键盘扩展中实现自动更正【英文标题】:Implement Autocorrect in iOS 8 Keyboard Extension 【发布时间】:2014-08-29 22:18:59 【问题描述】:

我正在创建一个自定义 ios 8 键盘作为宠物项目。

我正在尝试尽可能准确地复制系统键盘,但要从头开始构建它。

我基本上已经完成了这个。我遇到的最后一个障碍是在我的键盘上添加自动更正。有没有办法让自动更正的行为像在常规系统键盘上一样?

UILexicon documentation 非常稀疏。

编辑:

在这方面取得了一些进展。 UILexicon 的requestSupplementaryLexiconWithCompletion: 方法似乎只从我设备的联系人和键盘快捷键返回结果。然后我继续查看如何自动更正 NSString 并找到了 UITextChecker class,它从 iOS 3.2 开始就可用。

使用这种方法,我可以实现对单个单词的自动更正建议,但我仍在研究添加上下文感知自动更正的能力(例如,将“arctic monkeys”更正为“Arctic Monkeys”)。

【问题讨论】:

我一直认为自动更正是由字段本身处理的,不是吗? @MoatazHossam 自从我编辑后没有什么新鲜事。 【参考方案1】:

从文档来看,UILexicon 似乎是为了帮助您创建自己的自动更正,UILexicon 有一堆包含字符串对的 UILexiconEntry 条目,该条目包含一个 userInput 我假设的字符串它应该是用户输入的内容,而我认为documentText 是您应该替换该输入的内容。你使用 func requestSupplementaryLexiconWithCompletion(_ completionHandler: ((UILexicon!) -> Void)!) From UIInputViewController 来获取这个 UILexicon。

我假设 UIInputViewController 知道已写入 documentProxy 的内容,因为它是中继这些消息的那个,这就是它如何知道用户输入的内容并作为回报将什么放入 UILexicon..

这是我从阅读文档中收集到的,我还没有测试过,但测试它应该不会很难验证..

希望对你有帮助

丹尼尔

【讨论】:

是的,我花了一些时间研究 UILexicon,它似乎只返回来自用户定义的快捷方式和联系人的结果。它不会从默认系统字典中提取任何数据。 @KiranPanesar 您将如何设置自己的自定义词典?我正在考虑创建一个带有键值对的 NSDictionary,但是 UILexicon 在性能方面是否更好?感觉几乎没有任何文档或详尽的示例。 方法 requestSupplementaryLexiconWithCompletion: 总是返回相同的数组。它对自动更正功能没有用【参考方案2】:

看看这个简单但非常有效的自动更正实现 http://norvig.com/spell-correct.html

对于自动完成,您可以实现 trie。

【讨论】:

请提供一些有关为什么以及如何提供帮助的信息。另外,请在此处复制一些信息,以防链接失效。 伙计们,你们正朝着这里的泥泞前进。这不是一项简单的任务!

以上是关于在 iOS 8 键盘扩展中实现自动更正的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 - 如何隐藏键盘上方的建议列表?

如何在iOS8自定义键盘中使用自动更正和快捷列表?

iOS 8 键盘扩展:出现呼叫栏时出现约束错误?

是否可以删除 iOS Quicktype 键盘但保持自动更正?

iOS 8 键盘扩展 - UIInputViewController 无法添加多个视图 [关闭]

可以通过我的 android 应用程序禁用用户键盘的自动更正吗?