2009-07-23 9 views

Répondre

36

Les API que vous recherchez sont en UIResponder:

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event; 
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event; 
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event; 

En général, vous mettre en œuvre ceci:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { 
    if (event.type == UIEventSubtypeMotionShake) { 
    //Your code here 
    } 
} 

dans votre sous-classe UIViewController (UIViewController est une sous-classe de UIResponder). Aussi, vous voulez le gérer dans motionEnded: withEvent :, pas motionBegan: withEvent :. motionBegan: withEvent: est appelé lorsque le téléphone suspecte que des secousses se produisent, mais le système d'exploitation peut déterminer la différence entre un utilisateur secouant délibérément et les secousses accidentelles (comme monter les escaliers). Si le système d'exploitation décide que ce n'était pas un véritable tremblement après motionBegan: withEvent: s'appelle il appellera motionCancelled: au lieu de motionEnded: withEvent :.

+0

Ai-je raison si je dis que nous devons ajouter le code '[auto becomeFirstResponder];' sur le point de vue dont nous avons besoin geste de secouer pour travail? –

+1

Vous auriez raison de dire cela. Aussi: (BOOL) canBecomeFirstResponder {return YES;} – akaru

3

Joe Hewitt récemment committed du code à Three20 qui utilise l'événement de secousse 3.0. On dirait que vous avez juste besoin d'implémenter du code simple dans -motionBegan:withEvent: à l'intérieur de votre UIResponder.

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { 
    if (event.type == UIEventSubtypeMotionShake) { 
     ... 
    } 
} 
7

J'ai posté un exemple 3.0 complet dans ce fil:

How do I detect when someone shakes an iPhone?

+0

Merci, je l'ai lu. Mais cette approche n'utilise pas de nouvelle API. – sashaeve

+0

Continuez à lire, ma réponse à ce poste utilise 3.0. J'utilise les événements postés ci-dessus, seulement j'explique aussi le fait de devoir configurer UIView pour être le premier répondeur qui est crucial pour que cela fonctionne réellement. –

Questions connexes