我正在尝试制作iOS键盘扩展程序,但是我无法将包含应用程序的数据同步/更新到扩展程序。
正如文件所述,我正在使用
NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.example.domain.MyShareExtension"];
[mySharedDefaults setObject:theAccountName forKey:@"lastAccountName"];
完美无缺。在包含应用程序中启动键盘之前,我使用它,并在键盘的viewdidLoad中检查NSUserDefault,一切正常。
问题是,如果在我的包含应用程序中我更新了我的NSUserDefaults,我怎么能在键盘应用程序中知道NSUserDefaults已经更新。
我试过KVO,不行。 我试过NSUserDefaultsStandard,NSUserDidChangeNotification,不起作用。 NSUserDefaultsStandard根本不适用于键盘扩展。
我在考虑在键盘扩展中使用NSTimer,并且每隔X ms检查一次NSUserDefaults。但这太过分了。
我知道这可能是因为应用程序正在AppStore中进行。 BrightKey或CoolKey从包含应用程序更改键盘设计。 所以他们肯定会有回调或其他东西来更新他们的数据。
提前感谢任何想要提供干净解决方案的人。
答案 0 :(得分:0)
每次键盘和包含应用程序加载时,您都可以读取/写入共享用户默认值。
答案 1 :(得分:0)
Mt技巧是:
只需在包含的应用中添加UITextField
,然后设置Hidden
属性On
,即可隐藏文字字段。
用户选择任何主题后,只需拨打textView.becomeFirstResponder()
,这样您就可以在用户选择主题后加载键盘了。用户选择另一个主题后,只需调用textView.resignFirstResponder()
并等待约0.6秒(以便NSUserDefaults更新),然后再次调用textView.becomeFirstResponder()
,您的键盘将加载新主题! :)