如何在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在应用程序和扩展之间传递值。