防止 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 触发滚动