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

use*_*812 1 touch uiscrollview uiview

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

在我的自定义视图中,我也想要手柄触摸,所以我也覆盖了touchesBegan,touchesMoved并且touchesEnded.

这工作正常,但如果屏幕上的视图数量增加,那么我必须使用a UIScrollView作为我的根视图UIViewController.

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

我该如何解决这个问题?

Ste*_*arp 7

您可以尝试以下几种方法:

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

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

    看到类似的SO问题/答案在这里,在这里.

  2. 实施hitTest:withEvent:.见这里,这里.

  3. 用一个UIGestureRecognizer.见这里,这里.

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

  • 我有完全一样的问题.添加delaysContentTouches使滚动无效 (2认同)