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

时间:2014-10-05 11:05:13

标签: swift ios8 ios8-extension

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

非常感谢任何帮助。

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

let controller = UIInputViewController()

    controller.requestSupplementaryLexiconWithCompletion({
        lexicon in

        println(lexicon.description)

    })

但就我而言。不知道该怎么做。

1 个答案:

答案 0 :(得分:10)

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

你不能做的事情:

dotted red line

就地错误指示

in-place suggestion

就地自动更正对话框

will correct

建议栏自动更正指示

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

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

附录: How to Write a Spelling Corrector是Peter Norvig写的一篇很棒的小文章/教程,你可能会发现它很有意思,即使你试图写自动纠正,我也会推荐。