触摸UIView子类上的事件作为UIScrollView的子视图

时间:2013-07-26 06:28:27

标签: uiview uiscrollview touch

我已经实现了自己的自定义子类UIView并覆盖了drawRect:方法。

在我的自定义视图中,我还想要手柄触摸,因此我也覆盖了touchesBegantouchesMovedtouchesEnded

这很好但如果屏幕上的观看次数增加,那么我必须使用UIScrollView作为UIViewController的根视图。

一旦我的自定义UIView成为UIScrollView的子视图,它就不会收到触摸事件。即使我在自定义UIView中移动手指,滚动视图也会滚动(我的所有触摸事件都会转到UIScrollView)。

如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

您可以尝试几种方法:

  1. 尝试在UIScrollView上设置以下属性:

    scrollView.delaysContentTouches = NO;
    scrollView.canCancelContentTouches = NO;

    查看类似的SO问题/答案herehere

  2. 实施hitTest:withEvent:。请参阅herehere

  3. 使用UIGestureRecognizer。请参阅herehere

  4. 我个人建议使用UIGestureRecognizer,但这取决于您的具体情况(这些选项中的任何一个都可能适合您)。

答案 1 :(得分:0)

从另一个问题看看此回复:https://stackoverflow.com/a/4629821/193254

您也必须对scrollview进行子类化,并实现hitTest:方法。