同时检测捏合和旋转手势

5

我已经成功地使用UIGestureRecognizers实现了手势,允许用户放大和旋转视图。然而,用户不能同时执行两个手势(即同时旋转和缩放)。我该如何解决这个问题?以下是我添加手势的方法:

var rotateRecognizer = UIRotationGestureRecognizer(target: self, action: "handleRotate:")
var pinchRecognizer = UIPinchGestureRecognizer(target: self, action: "handlePinch:")

testV.addGestureRecognizer(rotateRecognizer)
testV.addGestureRecognizer(pinchRecognizer)

https://dev59.com/-2sz5IYBdhLWcg3wHUIU - Bannings
3个回答

7
在Swift 3中,委托方法的名称为:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
        return true
    }

也需要为手势设置委托:

rotateRecognizer.delegate = self
pinchRecognizer.delegate = self

3

我刚刚添加了这个代码,它可以正常工作:

func gestureRecognizer(UIGestureRecognizer,
        shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool {
            return true
    }

3

让 rotateGesture = UIRotationGestureRecognizer(target: self, action: #selector(self.rotateGesture))

self.imageView.addGestureRecognizer(rotateGesture)

让 pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(self.pinchGesture)) self.imageView.addGestureRecognizer(pinchGesture)

func rotateGesture(sender: UIRotationGestureRecognizer){
    sender.view?.transform = (sender.view?.transform)!.rotated(by: sender.rotation)
    sender.rotation = 0
    print("rotate gesture")
}
func pinchGesture(sender: UIPinchGestureRecognizer){
    sender.view?.transform = (sender.view?.transform)!.scaledBy(x: sender.scale, y: sender.scale)
    sender.scale = 1
    print("pinch gesture")
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接