【问题标题】:Using UILexicon to implement autocorrect in iOS 8 Keyboard Extension在 iOS 8 键盘扩展中使用 UILexicon 实现自动更正
【发布时间】:2014-10-05 11:05:12
【问题描述】:

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

任何帮助将不胜感激。

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

let controller = UIInputViewController()

    controller.requestSupplementaryLexiconWithCompletion({
        lexicon in

        println(lexicon.description)

    })

但这是就我所知。不知道从这里做什么。

【问题讨论】:

  • 感谢您再次提出我发布的类似问题 - 希望有人回答!

标签: swift ios8 ios8-extension


【解决方案1】:

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

你不能做的事情:

就地错误指示器

就地自动更正对话框

建议栏自动更正指示器

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

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

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

【讨论】:

  • 最初问这个问题的时候,我每天都回来查看答案,最终放弃了。我最终创建了一个非常原始的自动更正,通过在我的键盘上键入而不看它,然后将所有拼写错误的单词作为键添加到 Plist 上,并将正确的单词作为它的值。然后每个输入的单词,它都会检查它是否有一对。它根本没有效率,添加新单词需要很长时间,但它有效!您添加的文章正是我一直在寻找的。所以非常感谢你的回答。顺便说一句,我的键盘是 Dvorak 布局!
  • 我一直在尝试更改键盘扩展的语言或区域设置。如果我用英语运行我的扩展程序并尝试在 Pages 中编辑瑞典语文本文档,所有单词都会被标记为红色。如果我切换到 SwiftKey,我可以在英语和瑞典语之间切换,并且 Pages 中的拼写检查结果将根据所选语言进行更新。我找不到使用公共 api:s 的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多