iOS 8 键盘读/写设置,无需请求开放访问

Posted

技术标签:

【中文标题】iOS 8 键盘读/写设置,无需请求开放访问【英文标题】:iOS 8 Keyboard read/write setting without requesting open access 【发布时间】:2014-10-13 07:25:50 【问题描述】:

我正在编写 ios 8 键盘应用程序。这将是简单的英文键盘应用程序。我希望用户能够在键盘内设置键盘高度。但是,我不想将用户设置与包含的应用程序连接起来。因为我绝对希望用户确保其安全,所以我不打算要求开放访问。

我读过https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1 看到了

这个图像看起来如果扩展不需要与容器应用程序通信,看起来你可以保存和读取设置。

[[NSUserDefaults standardUserDefaults] setFloat:200 forKey:@"portraitHeight"];
[[NSUserDefaults standardUserDefaults] synchronize];

这在容器应用程序的执行中有效,但如果我从跳板搜索加载键盘,它会崩溃并且不显示键盘。

This ask about read data from containing app但我的问题是我是否只能在扩展中保存/读取。

【问题讨论】:

【参考方案1】:

哦,等等,我可能会找到答案。 我可以在键盘中读/写标准默认值,而不是容器应用程序。 我只需要从 Xcode 停止应用程序执行并退出,然后从其他应用程序开始使用键盘。 所以当调试过程附加时,你不能从跳板或我猜的其他应用程序打开。

我不确定这是否与此有关,但有时,从跳板搜索中,键盘不会出现并显示以下错误

OS_xpc_dictionary 无法获取插件 XXXXXXX(键盘名称)的可执行路径

这可能与 [NSUserDefaults standardDefaults] 读/写问题没有直接关系。

【讨论】:

@Tomoshisa_Takaoka - 您在关于跳板搜索的研究中发现了什么? 我发现无论我是否使用 NSUserDefault,它都会崩溃。我的键盘需要一些内存,因此可能是由于内存压力而发生的。键盘扩展似乎受到内存有限的限制。

以上是关于iOS 8 键盘读/写设置,无需请求开放访问的主要内容,如果未能解决你的问题,请参考以下文章

如何检查我的ios8自定义键盘扩展是否具有开放访问权限?

如何检查我的 ios8 自定义键盘扩展是不是具有开放访问权限?

ios 8 键盘扩展设置包

IOS 8 App Group 访问键盘扩展中的容器应用程序文件

设备上的 iOS 8 自定义键盘

尽管有德语硬件键盘,iOS 8.1 Simulator 始终使用美式键盘布局