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

标签 swift ios8 ios8-extension

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

如有任何帮助,我们将不胜感激。

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

let controller = UIInputViewController()

    controller.requestSupplementaryLexiconWithCompletion({
        lexicon in

        println(lexicon.description)

    })

但这就是我所得到的。不确定从这里开始做什么。

最佳答案

您在问一个非常困难的问题。简而言之,在 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 的一篇很棒的小论文/教程,您可能会觉得有趣,即使您尝试编写自动更正,我也会推荐它。

关于swift - 使用 UILexicon 在 iOS 8 键盘扩展中实现自动更正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26202009/

相关文章:

ios - 在表格 View 单元格中制作 'Read More' 按钮

IOS - 标签栏项目图像修改

xcode - 核心蓝牙 Xcode

ios - 如何为adHoc用户测试APNS?

objective-c - 使用尺寸类别以编程方式实现两种不同的布局

ios - 使用 Swift 从 Firebase 读取单个值

ios - 我的 iOS 应用程序中的键盘在 iPhone 6 上太高了。如何在 XCode 中调整键盘的分辨率?

ios - 无法让 AdMob 或 iAd 横幅广告在 iOS ActionExtension 或 ShareExtension 中运行

ios - 未调用函数 didSelectPost() - iOS 共享扩展

objective-c - 如何本地化 iOS 8 今天的扩展小部件以及小部件名称