Я пытаюсь панорамировать и сжимать жест в моем представлении.Моя цель - масштабирование двумя пальцами и панорамирование.Но когда я масштабирую двумя пальцами, я не могу панорамировать изображение.Даже код не вводит жест панорамирования.Только это работает, когда я масштабирую двумя пальцами и добавляю еще один палец (всего 3).Когда я вошел в эту ситуацию, мой код видит количество касаний как 1. То есть он игнорирует жесты.Где моя проблема?Как я могу сделать щипок и панорамирование двумя пальцами одновременно.Вот мой кодСпасибо
override func viewDidLoad() {
super.viewDidLoad()
self.view.isUserInteractionEnabled = true
self.view.isMultipleTouchEnabled = true
pan = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
pinch = UIPinchGestureRecognizer(target: self, action: #selector(handleZoom))
pan.delegate = self
pinch.delegate = self
pan.isEnabled = false
self.view.addGestureRecognizer(pinch)
self.view.addGestureRecognizer(pan)
}
extension LineupsViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
@objc func handleZoom(_ gesture: UIPinchGestureRecognizer) {
switch gesture.state {
case .began, .changed:
pan.isEnabled = true
if gesture.state == .began && self.viewCenter == nil {
self.viewCenter = self.view.center
}
if gesture.scale >= 1 {
let scale = gesture.scale
gesture.view!.transform = CGAffineTransform(scaleX: scale, y: scale)
}
break;
default:
UIView.animate(withDuration: 0.25, delay: 0, options: .curveEaseInOut, animations: {
gesture.view!.transform = .identity
}) { _ in
self.pan.isEnabled = false
}
}
}
@objc func handlePan(_ gesture: UIPanGestureRecognizer) {
switch gesture.state {
case .began, .changed:
if gesture.numberOfTouches != 2 {
let translation = gesture.translation(in: self.view)
gesture.view!.center = CGPoint(x: self.view.center.x + translation.x , y: self.view.center.y + translation.y)
gesture.setTranslation(.zero, in: self.view)
}
break;
default:
UIView.animate(withDuration: 0.25, delay: 0, options: .curveEaseInOut, animations: {
if self.viewCenter != nil {
gesture.view?.center = self.viewCenter!
}
}) { _ in
}
break
}
}
}