超簡単にiOSへシェイクジェスチャー検知を実装する方法
シェイクジェスチャーを検知したいUIViewControllerに以下のコードを記述してください。
- (BOOL)canBecomeFirstResponder { return YES; } - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if(event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake) { NSLog(@"Motion began"); } } - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event { if(event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake) { NSLog(@"Motion cancelled"); } } - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { if(event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake) { NSLog(@"Motion ended"); } }
motionCancelledは、motionがbeganしたけどendedしなかったとき、一定時間経つと呼ばれるようです。
beganしたけどendedしない状況は、弱く振ったときにあらわれました。
動作環境
iPhone4 iOS5.0
参考文献
how to detect and program around shakes for the iphone - Stack Overflow
http://stackoverflow.com/questions/1340492/how-to-detect-and-program-around-shakes-for-the-iphone
iPhone開発メモ シェイク - WillCraft Blog