【问题标题】:How to add custom notification in iOS Custom Keyboard?如何在 iOS 自定义键盘中添加自定义通知?
【发布时间】:2016-05-26 11:15:49
【问题描述】:

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

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

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

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

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

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

-(void)changeKeyboardColor{
}

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

谢谢。

【问题讨论】:

  • 您可以使用 NSUserDefaults 在应用程序和扩展程序之间传递值。

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


【解决方案1】:

developer.apple.com创建应用组

组名必须类似于 group.XXXXX

如果应用 ID 和扩展应用 ID 都禁用,则启用应用组。

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

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

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

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

在您的项目中将值存储在 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"))

// 目标-C

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

编码愉快!

【讨论】:

  • 你使用的是 Swift 还是 Objective-C?
  • 应该可以了。设置中缺少某些内容。这对我有用!
  • 我使用的是7.0版本
  • 但我认为这不是因为 Xcode 版本。再次检查所有设置。
  • 我检查了很多次。不工作...设置没有问题。我认为问题是如何在模拟器中运行扩展
【解决方案2】:

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

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

并且你需要在选择器中添加一个冒号:

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

【讨论】:

  • 我们可以在 iOS 模拟器中测试吗?
  • 我按照您所说的更改了代码。但我无法在模拟器中进行测试。如果我运行键盘扩展,那么我可以运行项目,如果我运行项目,那么我无法运行键盘扩展
猜你喜欢
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2014-08-11
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多