2016-02-15 2 views
4

Я добавил расширение пользовательской клавиатуры внутри своего приложения и работает отлично.Как добавить пользовательское уведомление в пользовательскую клавиатуру iOS?

Я добавил NSNotification в моей клавиатуре класса расширения, как это:

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

Теперь я называю это уведомление от моей точки зрения класса контроллера вроде этого:

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

Теперь я добавил мое уведомление селекторный метод в моей клавиатуре расширения класса следующим образом:

-(void)changeKeyboardColor{ 
} 

Но он не работает. Я тестирую в симуляторе, и я не знаю, как проверить расширение клавиатуры в симуляторе.

Спасибо.

+0

Вы можете использовать NSUserDefaults для передачи значения между приложением и расширением. – kb920

ответ

0

Способ уведомления должен принимать один параметр, запускающего уведомление:

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

И вам нужно добавить двоеточие к селектору:

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

Можем ли мы проверить это в iOS Simulator? – Nirav

+0

Я изменил код, как вы сказали. но я не могу тестировать в симуляторе. Если я запустил расширение клавиатуры, тогда я могу запустить проект, и если я запустил проект, то я не смогу запустить расширение клавиатуры – Nirav

2

Создать App Группа из developer.apple.com

enter image description here

Название группы должно быть как group.XXXXX

Включить группу приложений, если она отключена как для идентификатора приложения, так и для идентификатора приложения расширения.

enter image description here

Обновление существующих профилей выделения ресурсов, если это выглядеть Invalid!

Перейти к цели и указать имя группы, которую вы создали

enter image description here

Перейти к расширению клавиатуры и упомяните одноименной группы

enter image description here

Теперь вы сделали все необходимые настройки.

В вашем проекте стоимостью магазина в 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]; 

Для получения значения NSUserDefaults в классе Extension

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

// Objective-C

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

Счастливое кодирование!

+0

Не работает !!!!. test11 не печатает – Nirav

+0

вы используете Swift или Objective-C? – kb920

+0

Objective-C using – Nirav

Смежные вопросы