Objective-C中的UILexicon

你如何在Objective-C中使用UILexicon? 我发现苹果提供的文档是非常无益的。

它有什么作用? 它是否返回字典或正确拼写的单词? 还是我提供了一个像“hellllo”这样的词,并将其与正确的拼写“Hello”相匹配,并将其作为string返回?

任何帮助,将不胜感激。

requestSupplementaryLexiconWithCompletion:


这是我的错误报告,但显然我会有错误,因为我完全猜测如何使用该函数,不知道在块语句里面发生了什么(因为文档(当时)不说!(Beta 4 docs ))哈哈哈! 在这里输入图像说明

我从来没有使用过这个function,但是一个快速的networkingsearch“UILexicon”让我着迷于苹果的文档。 阅读和下面的链接从那里填写图片很快。

应用程序扩展程序devise指南快速解释了哪些词典适用于:

每个自定义键盘(独立于其RequestsOpenAccess键的值)都可以通过UILexicon类访问基本的自动UILexicon词典。 利用这个课程以及您自己devise的词典,在用户input文字时提供build议和自动更正。

点击UILexicon链接,我就可以看到该类的参考文档,这说明它是Apple提供的术语对的只读列表。 它的每个条目都是一个UILexiconEntry对象 – 该类的文档说它提供了一个userInput (用户input的内容,例如“ipad”)和一个documentText (代替它,例如“iPad”)。 由于这些类是只读的,因此它们可能不是您提供自己的自动纠错对的方式 – 正如文档中所述,它们用于补充您实施的任何自动纠正系统。


在这一点上,我甚至不需要看文档的requestSupplementaryLexiconWithCompletion:得到一个好主意如何使用它:只是声明告诉我:

  • 这是一个在UIInputViewController上的方法,我必须创build一个自定义键盘的子类。 在那个小类的某个地方,我可能应该self
  • 它的返回types是void ,所以我不能通过将一个requestSupplementaryLexiconWithCompletion调用的结果赋给一个variables来得到一个词典。
  • 它调用我提供的块,将UILexicon对象作为parameter passing给该块。
  • 它里面有“request”和“completionHander”这样的词,所以它可能会做一些asynchronous的事情,需要一段时间,并在完成时调用该块。

所以,我猜如果我正在编写一个自定义键盘,我会尽早调用这个方法(也许在viewDidLoad ),并存储它提供的UILexicon ,以便稍后用户input时可以引用它。 像这样的东西:

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

因为目前还不清楚requestSupplementaryLexiconWithCompletion需要多长时间才能完成,所以在我使用self.lexicon我应该检查一下是否nil


回到应用程序扩展编程指南 ,它列出“iOS用户期望的键盘function”下的“自动更正和build议”,在说:

您可以决定是否实施这些function; 对于刚刚列出的任何function,没有专门的API

所以听起来像自动更正是你必须自己做的,你自己的UI是UIInputViewController子类提供的视图的一部分。 编程指南中的“ 自定义键盘API快速入门”部分似乎暗示了如何做:使用documentContextBeforeInput查看用户最近input的内容, deleteBackward删除它, insertText:插入更正。