ios - 创建自己的 UILexicon 条目

标签 ios keyboard uilexicon

我试图继承 UILexicon 以便我可以在 init 部分创建自己的条目。但是,条目数组是只读的。如何在键盘扩展 (iOS 8) 中为自定义预测栏创建自己的词源?

最佳答案

Apple 似乎并未将 UILexicon 和 UILexiconEntry 设计为可变或创建可变副本。我在 Swift 中开发,它的实现不允许实例化新的 UILexiconEntry 对象,虽然我可以实例化一个新的 UILexicon 对象,但我无法添加到它的条目列表中。

因此,Objective C 接口(interface)的行为相似似乎是合理的,并且文档支持这种说法“Apple 打算让您将词典对象中的单词视为您自己设计的自动更正/建议词典的补充。”

幸运的是,为 Lexicon Entries 创建自己的存储非常简单,NSDictionary 可以直接存储它们。首先从现有的 UILexicon 列表中加载条目,使用 userInput 字符串作为每个条目的键,并将 item.userInput 字符串作为对象。这是 Swift 中的一个示例,对于客观的 C 开发人员来说应该是可读的。

var myLexicon = NSMutableDictionary()

self.requestSupplementaryLexiconWithCompletion { (theLexicon: UILexicon!) -> Void in
   let lexiconEntries = theLexicon.entries

   // Completion handler
   for item in lexiconEntries {
         myLexicon.setObject(item.documentText, forKey: item.userInput)
    }
 }

请注意,使用 NSDictionary 会从 Lexicons 中过滤掉重复的条目,但这应该不是问题,因为每个 userInput 应该只输出到一个 documentText。

关于ios - 创建自己的 UILexicon 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25679220/

相关文章:

ios - APNS 推送通知 - 设备 token 和钥匙串(keychain)

javascript - 如何使用 JavaScript 或 jQuery 中的键盘快捷键触发不同的按钮事件?

android - 软键盘打开时 DialogFragment 不会上升

JavaFX 全局键盘监听器

ios - 在 iOS 8 键盘扩展中实现自动更正

ios - ARKit - 如何从服务器 URL 加载 .scn 和纹理文件

ios - 使用字体样式和字体大小复制自定义字体

ios - 我们如何在 Swift 中测试 nils?