browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

シェイクジェスチャを認識する – iPhone開発メモ

logo_iPhone
Posted by on 2013年1月21日

iPhoneの端末を振る動作をトリガにして、任意の処理を実行する方法です。

【事前準備】

シェイクジェスチャを利用するクラス(UIViewControllerなど)が、

最初にイベントを受け取る状態にする必要があります。

シェイクジェスチャを利用したいクラスの処理部に、

UIResponderクラスにあるcanBecomeFirstResponderを

オーバーライドしてYESを返すようにし、最初にイベントを受け取るようにします。

- (BOOL)canBecomeFirstResponder
{
  return YES;
}

次に、Viewが表示される際に、FirstResponderになるようにメソッドを実装します。

- (void)viewDidAppear:(BOOL)animated
{
  [self becomeFirstResponder];
}

以上で、シェイクジェスチャを利用する事前準備は完了です。


【シェイクジェスチャ認識】

シェイクジェスチャを行うと、以下の関数でハンドリングされます。

それぞれ、ジェスチャ発生時とジェスチャ終了時に呼ばれる関数で、

この関数をオーバーライドすることで、シェイクジェスチャ認識ができます。

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

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

以下は、シェイクジェスチャ終了時にログを出力する例です。

シェイクジェスチャと判定するためには、この関数の引数として渡される

motionの値が「UIEventSubtypeMotionShake」であることを利用します。

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
  // シェイクジェスチャ終了時にログを出力
  if (motion == UIEventSubtypeMotionShake) {
    NSLog("Snaked");
  }
}

Comments are closed.