2013-03-05 2 views
4

Я хочу интегрировать функцию встряски во всем приложении. Поэтому я делаю все в appDelegate. Мне нужно нажать viewController, я могу нажать в motionBegan, но я хотел сделать это motionEnded. yes motion finished работает в контроллере представления, но в делетете приложения он не вызывается. Ведение вmotionEnded не вызван в appDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    [self becomeFirstResponder]; 
} 
- (BOOL)canBecomeFirstResponder{ 
    return YES; 
} 

motionEnded не называется

-(void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { 
    if(event.subtype==UIEventSubtypeMotionShake){ 
     NSLog(@"motionEnded called"); 
    } 
} 

motionBegan называется

-(void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { 
    if(event.subtype==UIEventSubtypeMotionShake){ 
     NSLog(@"motionBegan called"); 
    } 
} 
+0

уведомление может помочь, я думаю – nsgulliver

+0

i haven ot так много работал с уведомлением, я попробовал добавитьObserver «DeviceShaken» в applicationDidBecomeActivie, но не получил –

+0

, решила ли вы свою проблему? был ответ полезным? – nsgulliver

ответ

1

вы могли в основном зарегистрировать ваш viewController для applicationDidBecomeActiveNotification или любой в зависимости от ваших потребностей

, например, в ваш метод«s вы можете зарегистрировать его для уведомления

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(myMethod) 
               name:UIApplicationDidBecomeActiveNotification object:nil]; 

и реализовать этот метод в классе, ваш myMethod будет вызывать каждый раз, когда приложение станет активным

-(void) myMethod(){ 
// do your stuff 
} 

наконец отменит регистрацию ViewController из уведомление по методу dealloc

-(void)dealloc{ 
[[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 
Смежные вопросы