我有一个带有 MKMapView
和覆盖 UIView
的应用程序,用户可以在 map 上绘制多边形,这是通过使用 完成的touchesBegan
、touchesMoved
等,然后累积触摸位置并将它们添加为 CAShapeLayer
的路径。`
这工作得很好,但我们也希望能够通过捏合来缩放 map View 。
所以我们需要的是:
单指触摸或拖动应被覆盖 View 捕获并记录为用户正在绘制的多边形的输入。
多手指触摸(捏合、旋转等)应传递到 map View (位于叠加层后面)
实现这一目标最明智的方法是什么?显然 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),如果是,则不处理它。然后该事件应该冒泡到 map View 。
关于ios - UIView 捕获单指 Action ,但发送两指捏合以查看后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628352/