首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C中的UILexicon

目标C中的UILexicon
EN

Stack Overflow用户
提问于 2014-07-23 16:48:06
回答 1查看 4K关注 0票数 4

你如何在目标C中使用UILexicon?我发现苹果提供的文档是非常没有帮助的。

是干什么的呢?它是返回字典还是拼写正确的单词?或者,我是否提供了一个像"hellllo“这样的单词,并将其与正确的拼写"Hello”进行匹配,并将其作为字符串返回?

任何帮助都将不胜感激。

requestSupplementaryLexiconWithCompletion:

这是我的错误报告,但显然我会有错误,因为我完全在猜测如何使用函数,而不知道块语句中包含了什么(因为docs (当时)没有说!(贝塔4博士)哈哈!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 19:55:21

我从来没有使用过这个功能,但是对"UILexicon“的快速网络搜索使我在苹果的文档中找到了它;在那里阅读和跟踪链接的速度相当快。

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html#//apple_ref/doc/uid/TP40014214-CH16-SW1对词典的用途有一个快速的解释:

每个自定义键盘(独立于其RequestsOpenAccess键的值)都可以通过UILexicon类访问一个基本的自动更正词典。使用这个类,连同你自己设计的词典,在用户输入文本时提供建议和自动更正。

点击页面上的UILexicon链接,我就可以找到那个类的参考文档,这解释了这是一个苹果提供的术语对的只读列表。它的每个条目都是一个UILexiconEntry对象--该类的文档表示它提供了一个userInput (用户输入的内容,例如"iPad")和一个documentText (替代它的东西,例如"ipad")。由于这些类是只读的,因此它们可能不是提供您自己的自动校正对的方法--正如docs中所述,它们用于补充您实现的任何自动更正系统。

在这一点上,我甚至不需要查看requestSupplementaryLexiconWithCompletion:的文档就可以很好地了解如何使用它:声明告诉我:

  • 它是UIInputViewController上的一个方法,我需要子类来创建自定义键盘。在这个子类中的某个位置,我可能应该在self上调用它。
  • 它的返回类型是void,所以我不能通过将requestSupplementaryLexiconWithCompletion调用的结果赋值给变量来获得词汇表。
  • 它调用我提供的块,将UILexicon对象作为参数传递给该块。
  • 它包含诸如“请求”和"completionHander“这样的单词,因此它可能会执行一些异步的操作,需要一段时间,并在完成时调用该块。

因此,我猜想,如果我正在编写自定义键盘,我会在早期(可能在viewDidLoad中)调用这个方法,并保存它提供的UILexicon,以便在用户键入时可以引用它。就像这样:

代码语言:javascript
复制
@property UILexicon *lexicon;

- (void)viewDidLoad {
    [super viewDidLoad];
    [self requestSupplementaryLexiconWithCompletion:^(UILexicon *lexicon){
        self.lexicon = lexicon;
    }];
}

因为还不清楚requestSupplementaryLexiconWithCompletion需要多长时间才能完成,所以无论我在哪里使用self.lexicon,都应该检查它是否是nil

在应用程序扩展编程指南()中,它在“iOS用户期望的键盘功能”下列出了“自动更正和建议”,然后说:

您可以决定是否实现这些特性;对于刚才列出的任何特性,您都没有专用的API。

因此,听起来自动更正是您自己必须做的事情,使用您自己的UI,这是UIInputViewController子类提供的视图的一部分。编程指南中的API Quick Start for Custom Keyboards部分似乎暗示了您将如何做到这一点:使用documentContextBeforeInput查看用户最近输入的内容,使用deleteBackward删除它,使用insertText:插入更正。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24916369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档