1

メインビューで1つのビューを作成し、そのビューにスワイプとドラッグ(パン)ジェスチャの両方を適用したいとします。しかしそれがスワイプかパンのジェスチャーであることを知る方法は?スワイプとドラッグの間のジェスチャを検出する方法は?

+1

最も簡単な方法は、UIGestureRecognizersを使用して、OSに区別させる方法です。 – dfd

+0

@dfdありがとうございました –

答えて

3

@dfdが正しいです。このためには、常に組み込みのiOSジェスチャ認識機能を使用する必要があります。アプリがそれぞれジェスチャーを決定するための独自のロジックを実装する場合、iOSはユーザーにとって非常に矛盾したエクスペリエンスになります。

すべてのジェスチャ認識ツールはUIGestureRecognizerのサブクラスになります。 documentationをお読みください。

あなたの場合、UISwipeGestureRecognizerUIPanGestureRecognizerが必要です。ここで

は例です:

ここ
class ViewController: UIViewController { 

    override func viewDidLoad() { 
     let swipeRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(userSwiped)) 
     swipeRecognizer.numberOfTouchesRequired = 1 
     swipeRecognizer.direction = .left 

     let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(userPanned)) 
     panRecognizer.minimumNumberOfTouches = 1 

     view.addGestureRecognizer(swipeRecognizer) 
     view.addGestureRecognizer(panRecognizer) 
    } 

    @objc private func userSwiped(recognizer: UISwipeGestureRecognizer) { 

    } 

    @objc private func userPanned(recognizer: UIPanGestureRecognizer) { 

    } 

} 

、私はジェスチャー認識装置を作成し、私が欲しい方のビューに追加します。 viewDidLoadでこれを行う必要はありません。ターゲットを設定することで、ジェスチャが認識されたときに呼び出されるメソッドを設定します。レコグナイザは、自分自身をカスタム関数の引数として自動的に渡し、stateのプロパティなどを照会できます。ジェスチャレコグナイザごとにこのプロセスがどのように異なるかを理解するために、ドキュメントを読む必要があります。

+0

ありがとうございます。良い例え。 –

関連する問題