我正在使用自定义键盘扩展。这几乎完成了,但是当我与扩展程序和我的主机应用程序通信数据时,我只是面临设备问题,而我的主机应用程序没有在设备中工作,但在模拟器中工作的情况相同。我的代码如下:
HostApp View Controller :
- (void)viewDidLoad {
_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
[_defaultvalue setBool:YES forKey"Layout"];
[_defaultvalue synchronize];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)RightActionid)sender {
_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
[_defaultvalue setBool:YES forKey"Layout"];
[_defaultvalue synchronize];
}
- (IBAction)leftActionid)sender {
_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
[_defaultvalue setBool:NO forKey"Layout"];
[_defaultvalue synchronize];
}
我使用以下代码在我的扩展目标中检查此 BOOL 值,并根据我的需要更改键盘布局:
-(void)LoadKeyboardview
{
_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
if([_defaultvalue boolForKey"Layout"])
{
self.ObjKeyLayout=[[[NSBundle mainBundle]loadNibNamed"keyboardLayout" owner:nil options:nil]objectAtIndex:0];
[self addGesturToKeyBoard];
self.inputView =self.ObjKeyLayout;
}
else{
self.ObjKeyLayout=[[[NSBundle mainBundle]loadNibNamed"leftLayout" owner:nil options:nil]objectAtIndex:0];
[self addGesturToKeyBoard];
self.inputView =self.ObjKeyLayout;
}
}
相同的代码在模拟器 ios8 设备 iPhone5 中运行良好。请问我在苹果文档中读到的是否需要更多代码,上面写着 NSUserDefaults initWithSuiteName 帮助我,谢谢。
更新:
我已经在 plist 和 setting->keyboard-customkeyboar->Full Access ON 中设置了 RequestsOpenAccess
我的扩展列表:
Best Answer-推荐答案 strong>
我得到解决方案,我创建新的临时配置文件并启用 app-groups 并从 我的 Xcode 项目中设置 app group target-->capability--Expand App Group 并点击 + 添加应用组,如下图所示:
为我的键盘扩展目标做同样的事情。然后我在 NSuserDefault 中使用了这个设置应用程序组标识符:
_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName:@"group.keyboaredExtention"];
[_defaultvalue setBool:NO forKey:@"Layout"];
[_defaultvalue synchronize];
现在在我的设备和模拟器中工作正常。希望对其他人有所帮助。
关于ios - 与 Host App 的自定义键盘扩展通信在设备中不工作但在模拟器中工作,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/26162773/
|