2014-11-18 6 views
0

Я реализовал HandOff с помощью NSUserActivity, я изначально реализовал следующие методы непосредственно в моем классе ViewController, и все работает должным образом.UIResponder Assistance - метод не вызывается

-(void)updateUserActivityState:(NSUserActivity *)userActivity 
-(void)restoreUserActivityState:(NSUserActivity *)activity 
-(void)userActivityWasContinued:(NSUserActivity *)userActivity 

Как я планирую реализовать целый ряд видов деятельности, я думал, что было бы полезно создать отдельный класс, который будет реализовывать эти методы вместо дублирования подобного кода, позволяет называть этот HandOffClass. Этот класс успешно создает NSUserActivity и назначает его свойству UserActivity конкретного ViewController. Это почти работает, но два из вышеперечисленных методов реализуются с помощью UIResponder и не вызывается, если они содержатся в HandOffClass, если они реализованы непосредственно в ViewController, все работает должным образом.

-(void)updateUserActivityState:(NSUserActivity *)userActivity 
-(void)restoreUserActivityState:(NSUserActivity *)activity 

Так что моя проблема заключается в моем отсутствии понимания того, как реализовать/методы UIResponder подкласса

@interface HandOffClass : UIResponder <NSUserActivityDelegate> 

Является ли мой подход правильным или есть лучший способ приближения к этому, я предполагаю, что мой HandOffClass не входит в цепочку ответчиков?

Благодарим за помощь или руководство.

ответ

0

Возможно, вы захотите вставить этот объект в цепочку ответчиков, чтобы вы оказались на правильном пути.

попробовать что-то вроде этого:

id nextResponder = [self nextResponder]; 
[self setNextResponder: _myCoolHandOffClass]; 
[_myCoolHandOffClass setNextResponder: nextResponder]; 

Не забудьте удалить его!

В качестве альтернативы, используйте эти «HandOffClasses», чтобы содержать логику, и просто вызывайте их из класса ViewController. Таким образом, у вас немного меньше плиты котла (добавление и удаление из цепи ответчика), с возможным недостатком, что ваше событие будет обрабатываться ViewController, даже если вы ничего не сделаете.