2009-12-31 3 views
2

я это в моем ViewController:iPhone встряхивания событие не работает должным образом

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { 

    if (event.type == UIEventSubtypeMotionShake) { 

     NSLog(@"I have shaked"); 

    } 
} 

Почему это не работает? Edit:


я Infact есть это:

- (void) viewWillAppear:(BOOL)animated 
{ 
    [shakeView becomeFirstResponder]; 
    [super viewWillAppear:animated]; 
} 
- (void) viewWillDisappear:(BOOL)animated 
{ 
    [shakeView resignFirstResponder]; 
    [super viewWillDisappear:animated]; 
} 

ответ

3

Если UIViewController загружен в самом начале приложения, я видел странный сбой в OS 3.0, где он не станет первым ответчиком, если вы не задерживаете соответствующее сообщение. Попробуйте поместить

[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3]; 

в пределах -loadView или что-то еще, что вызывается, когда контроллер сначала настроен.

Может быть более элегантный способ обойти это, но этот подход сработал для меня.

0

ViewController должен быть первым ответчиком во время сотрясения, чтобы получить это событие.

Это может быть одна из причин, по которым он не работает.

+0

У меня действительно есть, что – Jaba

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