Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS自定义键盘中添加自定义通知?_Ios_Objective C_Iphone_Ios App Extension_Custom Keyboard - Fatal编程技术网

如何在iOS自定义键盘中添加自定义通知?

如何在iOS自定义键盘中添加自定义通知?,ios,objective-c,iphone,ios-app-extension,custom-keyboard,Ios,Objective C,Iphone,Ios App Extension,Custom Keyboard,我在我的应用程序中添加了自定义键盘扩展,运行非常完美 我在键盘扩展类中添加了NSNotification,如下所示: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardColor) name:@"keyboard_color" object:nil]; [[NSNotificationCenter defaultCenter] postNotification

我在我的应用程序中添加了自定义键盘扩展,运行非常完美

我在键盘扩展类中添加了
NSNotification
,如下所示:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardColor) name:@"keyboard_color"  object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"keyboard_color" object:self];
-(void)changeKeyboardColor{
}
现在,我从我的view controller类调用此通知,如下所示:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardColor) name:@"keyboard_color"  object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"keyboard_color" object:self];
-(void)changeKeyboardColor{
}
现在,我在键盘扩展类中添加了通知选择器方法,如下所示:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardColor) name:@"keyboard_color"  object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"keyboard_color" object:self];
-(void)changeKeyboardColor{
}
但它不起作用。我正在模拟器中测试,我不知道如何在模拟器中测试键盘扩展


谢谢。

通知的方法应采用单个参数,即触发通知:

-(void)changeKeyboardColorNotice: (NSNotification *) theNotice
{
  NSLog(@"In %s", __PRETTY_FUNCTION__);
}
您需要在选择器中添加冒号:

[[NSNotificationCenter defaultCenter] addObserver:self
  selector: @selector(changeKeyboardColorNotice:) 
  name: @"keyboard_color"  
  object: nil];
从创建应用程序组

组名必须类似于Group.XXXXX

如果应用程序id和扩展应用程序id都禁用,则启用应用程序组

如果现有配置文件无效,请更新它

转到目标并提及您创建的组名

转到键盘分机并提及相同的组名

现在您完成了所有必需的设置

在项目中,将值存储在NSUserDefaults中

 let userd: NSUserDefaults = NSUserDefaults(suiteName: "group.XXXXX")!
 userd.setObject("test11", forKey: "key")
 userd.synchronize()
//目标-C

NSUserDefaults *userd = [[NSUserDefaults alloc]initWithSuiteName:@"group.XXXXX"];
[userd setObject:@"test11" forKey:@"key"];//set the object you want to share
[userd synchronize];
NSUserDefaults *userd = [[NSUserDefaults alloc]initWithSuiteName:@"group.XXXXX"];
NSLog(@"%@",[userd objectForKey:@"key"]);
用于检索扩展类中的NSUserDefaults值

 let userd: NSUserDefaults = NSUserDefaults(suiteName: "group.XXXXX")!
 print(userd.objectForKey("key"))
//目标-C

NSUserDefaults *userd = [[NSUserDefaults alloc]initWithSuiteName:@"group.XXXXX"];
[userd setObject:@"test11" forKey:@"key"];//set the object you want to share
[userd synchronize];
NSUserDefaults *userd = [[NSUserDefaults alloc]initWithSuiteName:@"group.XXXXX"];
NSLog(@"%@",[userd objectForKey:@"key"]);

快乐编码

我们可以在iOS模拟器中测试吗?我像你说的那样更改了代码。但我无法在模拟器中进行测试。若我运行键盘扩展,那个么我就可以运行project,若我运行project,那个么我就不能运行键盘扩展。你们使用的是Swift还是Objective-C?这应该是可行的。设置中缺少某些内容。这是我的工作!我使用的是7.0版本,但我认为这不是因为Xcode版本。再次检查所有设置。我检查了多次。不工作。。。设置中没有问题。我认为问题在于如何在模拟中运行扩展,您可以使用NSUserDefaults在应用程序和扩展之间传递值。