以 UIScrollView 作为子类的 UIView 不接收触摸事件
Posted
技术标签:
【中文标题】以 UIScrollView 作为子类的 UIView 不接收触摸事件【英文标题】:UIView with UIScrollView as a subclass not receiving touch events 【发布时间】:2013-10-23 17:18:01 【问题描述】:我正在使用带有触摸开始/移动/结束方法的 UIView。我已将 UIScrollView 添加为 UIView 的子视图。现在,在将 UIScrollView 添加为子视图后,我在这些触摸对应方法中没有收到任何触摸事件。我尝试设置UIScrollView 属性 canCancelContentTouches,delaysContentTouches 为 NO。但还是不行。
【问题讨论】:
您可以将滚动视图设置为setUserInteractionEnabled:NO
并在您的 UIView 触摸事件中处理滚动视图滚动。但否则,如果滚动视图的内容大小大于它的框架,它将消耗触摸事件。
【参考方案1】:
您可以覆盖 UIView 方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
确定触摸是否在子视图(滚动视图)的范围内并将它们传递给您的父视图
return [super hitTest:point withEvent:event];
和
return [super pointInside:point withEvent:event];
【讨论】:
但是这里的问题是 UIView 和 UIScrollView 的边界是一样的。以上是关于以 UIScrollView 作为子类的 UIView 不接收触摸事件的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将触摸传递给 UIScrollView 以进行滚动