使って創ってApp

ソフトウェアを使ったり作ったりするブログです

iOSアプリ開発でシェイクを検出する

iOSアプリ開発で、シェイクジェスチャーを検出する方法のメモです。

Udemy の講座 完全攻略!初心者からプロになるためのiOS 9アプリ開発のすべて のレクチャー83 を参考にしています。

開発環境

シェイクジェスチャーを検出する

viewcontroller に以下のコードを書きます。

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
  if motion == UIEventSubtype.MotionShake {
    print("Device was shaked")
  }
}

print 文の箇所が、シェイクジェスチャーを検出した場合に実行されます。

ちょっと疑問

Udemyの講座でもネットで調べても、if motion == UIEventSubtype.MotionShake の部分が if event?.subEventType == UIEventSubtype.MotionShake になっています。せっかく motion 引数が渡されているのに、なぜ後者の方法を取るのでしょうね? ドキュメントで motionEnded メソッドを調べても特に注意は書かれていませんでしたし、このメソッドが書かれているサンプルプロジェクト(GLPaint)では motion == の書き方をしていました。なので motion == でもきっと問題ないでしょう。