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

Som*_*Guy 10 swift ios8 ios8-extension

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

任何帮助将不胜感激.

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

let controller = UIInputViewController()

    controller.requestSupplementaryLexiconWithCompletion({
        lexicon in

        println(lexicon.description)

    })
Run Code Online (Sandbox Code Playgroud)

但就我而言,这就是我的意思.不知道该怎么做.

cmy*_*myr 10

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

你不能做的事情:

点缀红线

就地错误指示器

就地建议

就地自动更正对话框

会纠正的

建议栏自动更正指示器

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

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

附录: 如何编写拼写校正器是Peter Norvig 写的一篇很棒的小文章/教程,你可能会发现它很有趣,即使你不想写自动纠正,我也会推荐.

  • 当我最初问这个问题时,我每天都会回来找回答案,最终放弃了.我最后创建了一个非常原始的自动更正,方法是在键盘上键入而不查看它,然后将所有拼写错误的单词作为键添加到Plist中,并使用正确的单词作为其值.然后输入每个单词,它会检查它是否有一对.它根本不高效,添加新单词需要永远,但它有效!你添加的文章完全是我一直在寻找的东西.非常感谢你的回答.如果你顺便的话,我的键盘是Dvorak布局! (2认同)