我有一个带有MKMapView和叠加层UIView的应用,用户可以在地图上绘制多边形,方法是使用touchesBegantouchesMoved等,然后累积触摸位置和将它们添加为CAShapeLayer的路径。

这可以正常工作,但我们也希望能够捏缩放地图视图。

因此,我们需要以下内容:

单指触摸或拖动应被叠加视图捕获,并记录为用户正在绘制的多边形的输入。

多手指触摸(捏,旋转等)应传递到地图视图(位于叠加层的后面)

什么是最明智的方法来完成此操作?显然hitTesttouchesMoved都不能告诉我屏幕上有多少手指。

最佳答案

我相信您会希望在叠加层中实施this

let panGesture = UIPanGestureRecognizer(target: self, action:#selector(draggedView(sender:)))
panGesture.delegate = self

@objc func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
                             shouldReceive touch: UITouch) -> Bool {
    if gestureRecognizer is UIPanGestureRecognizer {
        return false
    }
    return true
}


您检查它是否为捏手势(或gesture.numberOfTouches> 1),如果是,则不进行处理。然后,事件应冒泡至地图视图。

关于ios - UIView捕获一个手指的 Action ,但发送两个手指的捏以查看后面的情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52628352/

10-14 20:42