1

我有一个 UIBezierPath,我想使用 containsPoint 方法对其执行命中测试。通过使用 UIGestureRecognizerDelegate 方法 shouldReceiveTouch,我可以通过这种方式检测实际贝塞尔路径上的触摸,并允许路径外的触摸向上传递到响应者链(这是所需的行为)。

这对点击非常有效,但是当涉及到连续手势(即平移)时会出现问题,因为 shouldReceiveTouch 不涵盖 touchesMoved 事件。

我可以使用 UIGestureRecognizerDelegate 方法gestureRecognizerShouldBegin 来阻止整个连续手势,但手势不会传递给下一个响应者。

是子类化 UIGestureRecognizer 并让 touchesMoved 调用 shouldReceiveTouch 的方法吗?或者我可以通过剪切路径来实现这一点,这是否也会导致在剪切区域之外传递事件?

谢谢

4

1 回答 1

0

我最终在绘制贝塞尔路径的 UIView 子类中覆盖了 pointInside:withEvent 。这样我就能够处理离散和连续的手势并将事件转发到超级视图。

于 2013-02-20T20:36:37.680 回答