Согласно документу Apple. Apple UIPanGestureRecognizer Разница между панорамированием и смахиванием, как показано ниже: -
UIPanGestureRecognizer - это конкретный подкласс UIGestureRecognizer, который ищет жесты панорамирования (перетаскивания). Пользователь должен нажимать одним или несколькими пальцами на вид во время его панорамирования. Клиенты, реализующие метод действия для этого распознавателя жестов, могут запросить у него текущий перевод и скорость жеста.
Жест панорамирования непрерывен. Он начинается ( начинается ), когда минимальное разрешенное количество пальцев ( minimumNumberOfTouches ) перемещается достаточно, чтобы считаться сковородой. Он изменяется (изменяется), когда палец перемещается, когда прижимается хотя бы минимальное количество пальцев. Он заканчивается ( заканчивается ), когда все пальцы подняты.
Клиенты этого класса могут в своих методах действий запрашивать у объекта UIPanGestureRecognizer текущий перевод жеста ( перевод (in :) ) и скорость перемещения ( скорость (in :) ). Они могут указать вид, система координат которого должна использоваться для значений перемещения и скорости. Клиенты также могут сбросить перевод до желаемого значения.
Пример демонстрации 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
}
}
}
Согласно документу Apple. Apple 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")
}
Пример изображения для распознавателя