UIInputViewController - 根据容器应用程序中的用户输入禁用键

UIInputViewController - Disable Keys Based on User Input in Container App

所以,假设我有一个容器应用程序和一个用于自定义键盘的应用程序扩展。假设自定义键盘默认有 5 个键。这些键是什么并不重要。

现在,我希望用户能够禁用容器应用程序中 5 个键中的任何一个。如果在容器应用程序中禁用,按键应显示为红色并在键盘中禁用。

我的问题是:如何将容器应用程序中的用户 preferences/serialized 数据加载到 UIInputViewController 中?

如果有人可以帮助完成实现此目标所需的步骤,或提供 link 教程(我似乎找不到),将不胜感激。

所以我终于想通了。 以下是基本步骤。

1) 创建共享组。此 link 提供了有关如何执行此操作的分步说明:. I had initially implemented these steps but I was still unable to access the shared directory (outlined in ) 来自扩展。事实证明,您必须将权利文件添加到容器应用程序和扩展目标。这对我来说是个大问题。

2) 一旦您确认跨容器应用程序和扩展程序的开放访问,您就可以在它们之间共享数据。参考了这个教程分享:http://www.atomicbird.com/blog/sharing-with-app-extensions。您有两个选择:使用共享文件目录或使用共享 NSUserDefaults 域。在我的应用程序中,我使用 NSCoding 保存和加载数据。但是,我在取消归档扩展中的数据时遇到了问题,所以我决定改为保存到 NSUserDefaults(我在扩展中需要的数据可以格式化为一个简单的字典,所以这很容易)。

使用共享组和 NSUserDefaults,我现在可以将数据从容器应用程序保存和加载到扩展程序!