ios - 如何在 iOS8 自定义键盘中使用自动更正和快捷键列表?

标签 ios objective-c keyboard ios8

我想在我的自定义键盘上使用自动更正和快捷键列表,例如默认英文键盘。 我查看了键盘文档,但不知道如何使用它。

keyboard documentation .

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

  • 用户地址簿数据库中未配对的名字和姓氏
  • 在“设置”>“通用”>“键盘”>“快捷方式”列表中定义的文本快捷方式
  • 常用词词典

如何在 Objective-C 中访问我们字典中的快捷方式列表和输入?

如何将 UILexicon 与 requestSupplementaryLexiconWithCompletion 一起使用?

最佳答案

实现词典看起来很像这样:

  1. 使用 requestSupplementaryLexiconWithCompletion() 在启动时获取词典一次。
  2. 输入的每个类型文本将其添加到 NSString(跟踪当前单词)
  3. 当用户按下空格键(当前单词的末尾)时,根据词典检查字符串
  4. 如果匹配则计算字符数并删除该字符数
  5. 输入词库建议的建议
  6. 清空字符串重新开始

此外,您还可以使用 UITextChecker 来提供更高级的自动更正功能。

代码(在 Objective-C 中,我在公交车上用 SO 写的可能不是 100% 准确,但它应该可以):

UILexicon *lexicon;
NSString *currentString;

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

-(IBAction)myTypingAction:(UIButton *)sender {
    [documentProxy insertText:sender.title]; 
    [currentString stringByAppendingString:sender.title];
}

-(IBAction)space {
   [documentProxy insertText:@" "];
   for (UILexiconEntry *lexiconEntry in lexicon.entries) {
       if (lexiconEntry.userInput isEqualToString:currentString) {
            for (int i = 0; currentString.length >=i ; i++) { 
                 [documentProxy deleteTextBackwards];
            }
            [documentProxy insertText:lexiconEntry.documentText];
            currentString = @"";  
        }
    } 
}

如果您有任何问题,请随时发表评论。

来源:iOS 8 键盘和 UILexicon 的个人经验

关于ios - 如何在 iOS8 自定义键盘中使用自动更正和快捷键列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311453/

相关文章:

python-2.7 - Pygame 键被​​按下

ios - 在 iwatch 中触摸 UITextField 外部时关闭键盘

iphone - 更改工具栏的色调

objective-c - 无法理解 Objective C 中的以下代码?

html - 具有线性渐变的背景图像的跨浏览器 css

ios - Cocoapods 0.39.0更新错误

ios - 单击时如何检查 ImageView 标签

ios - 将 textField 更改为 textView 时出现问题?

ios - 如何通过代码设置UITabBar的选中项

ios 在表格 View 中选择单元格 View