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

11

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

非常感谢任何帮助。

我目前发现的:

let controller = UIInputViewController()

    controller.requestSupplementaryLexiconWithCompletion({
        lexicon in

        println(lexicon.description)

    })

但这就是我到目前为止所做的。不确定接下来该怎么做。


2
感谢您重新提出我发布的类似问题 - 希望有人能回答! - agf119105
1个回答

10
您正在提出一个非常困难的问题。简而言之,在iOS8上没有内置的自动更正访问权限;在iOS上也没有访问API的权限,允许系统执行诸如显示红色“可能错误”下划线效果或其他方面的系统自动更正行为,例如就地建议对话框(在iOS 7上或如果您未显示建议栏)或“将更正”蓝色背景(在iOS 8上)。 以下是您无法做到的事情:

dotted red line

就地错误指示器

in-place suggestion

就地自动更正对话框

will correct

建议栏自动更正指示器 您可以编写自己的自动更正引擎,从头开始包括自己的文本处理和分析以及自己的用户界面模式。但是需要限制在键盘界限内完成,并且不能修改屏幕上的其他任何内容。许多第三方键盘都会这样做,例如minuumswiftkey(免责声明:我在 minuum 工作),但这是相当大量的工作。如果您对此感兴趣,一个好的起点可能是内置的 UITextChecker 类,尽管自动更正最终是与拼写检查不同的问题。

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

附录:Peter Norvig撰写的如何编写拼写纠正程序是一篇很棒的小论文/教程,即使您不打算编写自动纠正程序,我也会推荐阅读。


2
当我最初提出这个问题时,我每天都会回来查看答案,最终放弃了。我最终创建了一个非常原始的自动纠正程序,通过在键盘上打字而不看它,然后将所有拼错的单词作为Plist上的键,正确的单词作为其值添加进去。然后每输入一个单词,它都会检查是否有一对匹配。它并不高效,添加新单词需要很长时间,但它确实有效!你添加的文章正是我一直在寻找的东西。非常感谢你的回答。顺便说一下,我的键盘是Dvorak布局! - SomeGuy
我卡在尝试更改键盘扩展的语言或区域设置上了。如果我在英语中运行我的扩展并尝试在Pages中编辑瑞典文本文档,则所有单词都会被标记为红色。如果我切换到SwiftKey,我可以在英语和瑞典语之间切换,并且Pages中的拼写检查结果将根据所选语言更新。但是,我无法通过公共API找到这样做的方法。 - Daniel Saidi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接