我有一个带有MKMapView
和叠加层UIView
的应用,用户可以在地图上绘制多边形,方法是使用touchesBegan
,touchesMoved
等,然后累积触摸位置和将它们添加为CAShapeLayer
的路径。
这可以正常工作,但我们也希望能够捏缩放地图视图。
因此,我们需要以下内容:
单指触摸或拖动应被叠加视图捕获,并记录为用户正在绘制的多边形的输入。
多手指触摸(捏,旋转等)应传递到地图视图(位于叠加层的后面)
什么是最明智的方法来完成此操作?显然hitTest
或touchesMoved
都不能告诉我屏幕上有多少手指。
最佳答案
我相信您会希望在叠加层中实施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/