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

时间:2016-02-15 13:52:54

标签: ios objective-c iphone ios-app-extension custom-keyboard

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

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

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

现在我从我的视图控制器类调用此通知,如下所示:

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

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

-(void)changeKeyboardColor{
}

但它不起作用。我在模拟器中测试,我不知道如何在模拟器中测试键盘扩展。

感谢。

2 个答案:

答案 0 :(得分:2)

developer.apple.com

创建应用群组

enter image description here

组名必须与group.XXXXX

类似

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

enter image description here

如果看起来无效,请更新现有的配置文件!

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

enter image description here

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

enter image description here

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

在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];

用于在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"]);

快乐的编码!

答案 1 :(得分:0)

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

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

您需要在选择器中添加一个冒号:

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