11

我看到这个问题已经被问过几次了,但似乎没有人有答案。我正在尝试在自定义键盘上创建自动更正功能,但我完全不知道如何做到这一点。苹果提供了一些文档,但不是很详细。我知道它与 UILexicon 数据有关,但我不确定如何处理它以及如何使用它来更正用户正在输入的文本字符串。

任何帮助将不胜感激。

到目前为止我发现了什么:

let controller = UIInputViewController()

    controller.requestSupplementaryLexiconWithCompletion({
        lexicon in

        println(lexicon.description)

    })

但这是我所得到的。不知道从这里做什么。

4

1 回答 1

10

你在问一个非常困难的问题。简而言之,iOS8 上没有内置的自动更正功能;也无法访问 iOS 上的 API,这些 API 允许系统执行诸如显示红色“可能错误”下划线效果或系统自动更正行为的其他方面的操作,例如就地建议对话框(在 iOS 7 ,或者如果您没有可见的建议栏)或“将更正”蓝色背景(在 iOS 8 上)。

你不能做的事情:

红色虚线

就地错误指示器

就地建议

就地自动更正对话框

会更正

建议栏自动更正指示器

可以做的是从头开始编写自己的自动更正引擎,包括您自己的文本处理和分析以及您自己的用户界面习惯用法。这一切都必须在您无法在键盘范围之外进行绘制的限制下完成,并且您无法修改屏幕上的任何其他内容。许多第三方键盘都可以做到这一点,例如minuumswiftkey(免责声明:我在 minuum 上工作),但这是非偶然的工作量。如果您对此感兴趣,可以从内置的UITextChecker类入手,尽管自动更正最终是一个不同于拼写检查的问题。

UILexicon只有在你已经实现的时候才有用;它真正为您提供的只是一个单词列表,您可以使用这些单词列表来补充您正在使用的任何字典,以及实现您的用户可能在其系统设置中添加的任何文本快捷方式。它本身还不足以构建一个自动更正系统。

附录: How to Write a Spelling Corrector是 Peter Norvig 的一篇很棒的小论文/教程,您可能会觉得很有趣,即使您尝试编写自动更正,我也会推荐它。

于 2014-12-20T00:53:33.287 回答