web-dev-qa-db-ja.com

iOSでスワイプジェスチャーを検出する方法

私のiPhoneアプリでは、ユーザーがビュー上で行ったスワイプジェスチャーを認識する必要があります。

スワイプジェスチャーを認識して、スワイプで機能を実行する必要があります。

ユーザーがスワイプジェスチャーを行うと、ビューが水平方向にスライドして別のビューを表示する必要があります。

何をする必要がありますか?

どうすればそれを認識できますか?

34
Parth Bhatt

UISwipeGestureRecognizer を使用します。実際のところ、ジェスチャー認識機能は簡単です。件名にも WWDC10ビデオ があります。セッション120および121。

41
jer

あなたはそれがどのように機能するかを知っているが、まだ簡単な例を必要とするなら、ここにあります! (覚えていなくても、コピーアンドペーストの例を必要とする場合は、少なくとも便利になります)

UISwipeGestureRecognizer *mSwipeUpRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)];

[mSwipeUpRecognizer setDirection:(UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];

[[self view] addGestureRecognizer:mSwipeUpRecognizer];

.hファイルに以下を追加します。

<UIGestureRecognizerDelegate>
44

以下のリンクは、Objective-CでiPhoneのスワイプを検出する方法を説明するビデオチュートリアルにリダイレクトします。

ISwipeGestureRecognizerチュートリアル(iPhoneでのスワイプの検出)

Swiftでそれを実現するためのコードサンプル:

各方向に1つのUISwipeGestureRecognizerが必要です。 UISwipeGestureRecognizer.directionプロパティはオプション形式のビットマスクですが、各認識エンジンは一方向しか処理できません。必要に応じて、それらをすべて同じハンドラーに送信し、そこでソートするか、別のハンドラーに送信できます。 1つの実装を次に示します。

override func viewDidLoad() {
    super.viewDidLoad()

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)

    var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeDown.direction = UISwipeGestureRecognizerDirection.Down
    self.view.addGestureRecognizer(swipeDown)
}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.Right:
            println("Swiped right")
        case UISwipeGestureRecognizerDirection.Down:
            println("Swiped down")
        default:
            break
        }
    }
}
0
King-Wizard