防止 UIScrollView 向子视图发送触摸

Posted

技术标签:

【中文标题】防止 UIScrollView 向子视图发送触摸【英文标题】:prevent UIScrollView to send touches to subview 【发布时间】:2011-08-09 04:00:05 【问题描述】:

如何防止 UIScrollView 向其子视图发送触摸?

【问题讨论】:

我不认为标题说明了一切...您能否(糖衣)详细说明...您是否希望您的子视图在您滚动 UIScrollView 时保持静止? 好吧,我的子视图在屏幕上绘制东西。有时,当我滚动/放大时,会调用触摸方法并开始绘制,即使我只是想缩放/平移。因此,当我缩放/平移时,我希望子视图不接收任何触摸事件,因此它们不会绘制东西。 滚动/缩放所需的触摸与绘图所需的触摸完全不同吗?它们很可能是......所以你只需要区分(通过使用布尔值),因此当你检测到滚动/缩放时不要画东西 【参考方案1】:

你的subview.userInteractionEnabled = NO;

【讨论】:

【参考方案2】:

从 UIScrollView 继承并通过以下方式定义自己的 hitTest:

@implementation MyScrollView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event   
    return [self pointInside:point withEvent:event] ? self : nil;     


@end

因此,触摸不会被转发到内部子视图中,而是停留在 UIScrollView 的级别上。

【讨论】:

以上是关于防止 UIScrollView 向子视图发送触摸的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 中的触摸事件发送到后面的 tableview

UITableViewCell 与 UIScrollView 防止单元格触摸

防止 UIScrollView 中的 UISlider 触发滚动

带有检测触摸的图像视图的 UIScrollView

(iphone) uiscrollview 触摸。取消内容触摸并开始滚动

从 UIScrollview 向前触摸和手势到视图