目标-C中的UILexicon

Alb*_*haw 4 objective-c ios ios8 uilexicon custom-keyboard

你如何在Objective-C中使用UILexicon?我发现Apple提供的文档非常无用.

它有什么作用?它会返回字典或正确的单词拼写吗?或者我提供像"hellllo"这样的单词,并将其与正确的拼写"Hello"匹配并将其作为字符串返回?

任何帮助,将不胜感激.

requestSupplementaryLexiconWithCompletion:


这是我的错误报告,但显然我会有错误,因为我完全猜测如何使用该函数,不知道块语句内部的内容(因为文档(当时)没有说!(Beta 4 docs) ))哈哈哈! 在此输入图像描述

ric*_*ter 14

我从来没有使用过这个功能,但是对"UILexicon"的快速网络搜索使我获得了Apple的文档; 阅读和跟随链接从那里填写图片非常快.

App Extension编程指南快速解释了词典的用途:

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

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


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

  • 这是一个方法UIInputViewController,我必须创建一个自定义键盘的类.在那个子类的某个地方,我应该把它叫做self.
  • 它的返回类型是void,所以我不能通过将requestSupplementaryLexiconWithCompletion调用的结果赋给变量来获得词典.
  • 它调用我提供的块,将一个UILexicon对象作为参数传递给该块.
  • 它有"request"和"completionHander"这样的词,所以它可能会做一些需要一段时间的异步,并在完成时调用该块.

所以,我猜测如果我正在编写一个自定义键盘,我会尽早调用此方法(viewDidLoad也许是),并将UILexicon其保存,以便稍后在用户输入时可以引用它.像这样的东西:

@property UILexicon *lexicon;

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

因为目前还不清楚需要多长时间requestSupplementaryLexiconWithCompletion才能完成,我正在使用的任何地方self.lexicon都应该检查一下nil.


回到App Extension编程指南,它列出了"iOS用户期望的键盘功能"下的"自动更正和建议",然后说:

您可以决定是否实施此类功能; 没有专门的API用于刚刚列出的任何功能

所以听起来像自动修正是你必须自己做的事情,你自己的UI是你的UIInputViewController子类提供的视图的一部分.编程指南中的" 自定义键盘API快速入门"部分似乎暗示了如何执行此操作:用于documentContextBeforeInput查看用户最近键入的内容,deleteBackward删除它以及insertText:插入更正.