アップルのドキュメントによると。Apple UIPanGestureRecognizerパンとスワイプの違いは次のとおりです:-
UIPanGestureRecognizerは、パン(ドラッグ)ジェスチャを探すUIGestureRecognizerの具象サブクラスです。ユーザーは、ビューをパンしている間、ビュー上で1本以上の指を押している必要があります。このジェスチャレコグナイザのアクションメソッドを実装するクライアントは、ジェスチャの現在の変換と速度を要求できます。
パンのジェスチャーは継続的です。許可される指の最小数(minimumNumberOfTouches)がパンと見なされるのに十分なだけ移動したときに開始されます。最小数以上の指を押したまま指を動かすと変化(変化)します。これは、(終了終了し、すべての指が持ち上げられたとき)。
このクラスのクライアントは、アクションメソッドで、ジェスチャの現在の変換(translation(in :))および変換の速度(velocity(in :))をUIPanGestureRecognizerオブジェクトに照会できます。座標系を移動と速度の値に使用するビューを指定できます。クライアントは、変換を希望の値にリセットすることもできます。
Swift 3 UIPanGestureRecognizerデモの例:- リソースリンク
import UIKit
class ViewController: UIViewController {
// this records our circle's center for use as an offset while dragging
var circleCenter: CGPoint!
override func viewDidLoad() {
super.viewDidLoad()
// Add a draggable view
let circle = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))
circle.center = self.view.center
circle.layer.cornerRadius = 50.0
circle.backgroundColor = UIColor.green()
// add pan gesture recognizer to
circle.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.dragCircle)))
self.view.addSubview(circle)
}
func dragCircle(gesture: UIPanGestureRecognizer) {
let target = gesture.view!
switch gesture.state {
case .began, .ended:
circleCenter = target.center
case .changed:
let translation = gesture.translation(in: self.view)
target.center = CGPoint(x: circleCenter!.x + translation.x, y: circleCenter!.y + translation.y)
default: break
}
}
}
アップルのドキュメントによると。アップルUITapGestureRecognizer
UITapGestureRecognizerは、単一または複数のタップを探すUIGestureRecognizerの具象サブクラスです。ジェスチャーが認識されるためには、指定された数の指がビューを指定された回数タップする必要があります。
タップは個別のジェスチャーですが、ジェスチャー認識機能の状態ごとに個別です。したがって、関連付けられたアクションメッセージは、ジェスチャが開始すると送信され、ジェスチャの終了状態まで(およびそれを含む)中間状態ごとに送信されます。したがって、タップジェスチャを処理するコードは、ジェスチャの状態をテストする必要があります。
Swift 3 UITapGestureRecognizer Demoサンプル リソースリンク
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
tap.numberOfTapsRequired = 2
view.addGestureRecognizer(tap)
}
func doubleTapped() {
// do something cool here
print("Test TapGesture")
}
Recognizerの画像の例