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

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

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

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardColor) name:@"keyboard_color" object:nil]; 

现在我从我的视图控制器类这样调用这个通知:

 [[NSNotificationCenter defaultCenter] postNotificationName:@"keyboard_color" object:self]; 

现在我已经在我的键盘扩展类中添加了我的通知select器方法,如下所示:

 -(void)changeKeyboardColor{ } 

但它不工作。 我在模拟器中testing,我不知道如何在模拟器中testing键盘扩展。

谢谢。

从developer.apple.com创build应用程序组

在这里输入图像说明

组名必须像group.XXXXX一样

如果应用程序组禁用了应用程序ID和扩展程序ID,则启用应用程序组。

在这里输入图像说明

如果它看起来无效,更新到现有的configuration文件。

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

在这里输入图像说明

转到键盘扩展名并提及相同的组名称

在这里输入图像说明

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

在NSUserDefaults中的项目存储值中

  let userd: NSUserDefaults = NSUserDefaults(suiteName: "group.XXXXX")! userd.setObject("test11", forKey: "key") userd.synchronize() 

// Objective-C的

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

用于检索Extension类中的NSUserDefaults值

  let userd: NSUserDefaults = NSUserDefaults(suiteName: "group.XXXXX")! print(userd.objectForKey("key")) 

// Objective-C

 NSUserDefaults *userd = [[NSUserDefaults alloc]initWithSuiteName:@"group.XXXXX"]; NSLog(@"%@",[userd objectForKey:@"key"]); 

快乐编码!

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

 -(void)changeKeyboardColorNotice: (NSNotification *) theNotice { NSLog(@"In %s", __PRETTY_FUNCTION__); } 

你需要在select器中添加一个冒号:

 [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(changeKeyboardColorNotice:) name: @"keyboard_color" object: nil];