2017-07-12 15 views
1

シングルタップとダブルタップの問題の識別には問題はありませんが、いずれも古くなっています。だから、シングルタップとダブルタップの違いを特定する方法を知りたいのですが、ダブルタップするたびにシステムがタップだと思うからです。私はnumberOfTapsの値を1回タップで1に、ダブルタップで2回に設定しました。スウィフト - シングルタップとダブルタップの違いを特定する方法

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(respondToTapGesture(gesture:))) 
    view.addGestureRecognizer(tap) 

    tap.numberOfTapsRequired = 1 

let doubleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(respontToDoubleTapGesture(gesture:))) 
    view.addGestureRecognizer(doubleTap) 

    doubleTap.numberOfTapsRequired = 2 
+0

「UITapGestureRecognizer」を使用していますか?私の思考は、あなたの 'タップ'があなたの 'ダブルタップ(doubleTap)'に拍手をかけていることです。そうであれば、ダブルタップであることがわかるまでセレクタにコードを追加して待つようにすることができます。 (私はこのように構成されたレコグナイザを使用すると、1つのジェスチャにしかコードを追加できないと思います。) – dfd

答えて

5

アクションを認識するか、シングルタップとダブルを区別するためには、あなたがジェスチャーを失敗する必要があり、ちょうど

tap.require(toFail: doubleTap) 
1

の下にそのコードを追加し、問題は次の2つを持っているということですジェスチャーを認識しようとする異なる認識装置。

このコードは、それらのそれぞれが動作するようになります:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 

あなたはジェスチャー認識デリゲートとしてコントローラを宣言したことを確認する必要があります。

class FromDB: UICollectionViewController, UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate { 
} 

あなたにも必要とする必要がありますダブルタップで失敗したシングルタップ:

tap.require(toFail: doubleTap) 
関連する問題