シェイクで実行する

iPhoneを振る(シェイクする)と1〜6の数字をデバッグエリアに出力するサイコロを作ってみます。 使用するのはUIResponderクラスのmotionBegan:withEvent:メソッドです。
iOSシミュレータではハードウェアメニューのシェイクジェスチャーで試せます。

ViewControllerクラスはUIViewControllerクラスをスーパークラスにしていますが、そのUIViewControllerクラスのスーパークラスはUIResponderクラスです。したがって、ViewControllerクラスはmotionBegan:withEvent:メソッドをオーバーライドして利用できます。

iPhoneをシェイクするとmotionBegan:withEvent:メソッドが実行され、第一引数のmotionにモーションにUIEventSubtypeMotionShakeが入っています。

実装ファイルは次のとおりです。
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

// 継承しているUIResponderクラスのメソッド
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    //モーションがシェイクのときに実行する
    if(motion == UIEventSubtypeMotionShake){
        int num = arc4random()%6 + 1;
        NSLog(@"num %d", num);
    }
}

@end