代码之家  ›  专栏  ›  技术社区  ›  Oskar

ShouldReceiveTouch可实现连续手势

  •  1
  • Oskar  · 技术社区  · 12 年前

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

    这在轻击时效果很好,但当涉及到连续手势时,即平移时,就会出现问题,因为shouldReceiveTouch不包括touchesMoved事件。

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

    子类化UIGestureRecognizer和get touchesMoved以调用shouldReceiveTouch是解决这个问题的方法吗?或者我可以通过剪裁路径来实现这一点,这是否也会导致将事件传递到剪裁区域之外?

    谢谢

    1 回复  |  直到 12 年前
        1
  •  0
  •   Oskar    12 年前

    我最终在我的UIView子类中重写了pointInside:withEvent,该子类绘制了bezier路径。通过这种方式,我可以处理离散和连续的手势,并将事件转发到超级视图。

    推荐文章