我正在使用自定义键盘扩展。这几乎完成了,但是当我与扩展程序和我的主机应用程序通信数据时,我只是面临设备问题,而我的主机应用程序没有在设备中工作,但在模拟器中工作的是同样的事情。我的代码如下:
HostApp 视图控制器:
- (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)RightAction:(id)sender {
_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp.myappname.targetKeyboard"];
[_defaultvalue setBool:YES forKey:@"Layout"];
[_defaultvalue synchronize];
}
- (IBAction)leftAction:(id)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
我的扩展列表: