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