如何阻止 UIScrollView 吞下触摸

Posted

技术标签:

【中文标题】如何阻止 UIScrollView 吞下触摸【英文标题】:How to Stop a UIScrollView from Swallowing Touches 【发布时间】:2012-07-14 01:13:58 【问题描述】:

我有UIScrollView 有很多子视图。当我滚动时,我想点击要拖动的子视图。有没有办法让UIScrollView 停止吞咽?或者当您取消滚动时是否可以开始新的触摸(就像它滚动并且我点击它一样,子视图也会被点击以便我可以将其拖出)?

【问题讨论】:

【参考方案1】:

子类 UIScrollView 并覆盖 - (BOOL)touchesShouldCancelInContentView:(UIView *)view 方法。这是一个允许 uibutton 触摸通过的示例:

#import "scrollViewWithButtons.h"

@implementation scrollViewWithButtons

- (BOOL)touchesShouldCancelInContentView:(UIView *)view

    return ![view isKindOfClass:[UISlider class]];


@end

【讨论】:

感谢您的回复!但是可以说,UISliderUIImageView,但我有很多UIImageViews,那我应该如何处理它? 我有UIScrollView,其中有UIViews。 UIViewUIImageView,可以选择也可以拖动。现在,问题是,当我滚动并再次点击它以取消/停止滚动时,我还想检查我是否点击了UIImageView,以便将其拖出。但是发生的事情是,滚动停止了。谢谢! 我不确定是否有办法在 uiscrollview 内滚动(默认滚动除外) 我不想滚动,我只想尽可能在​​滚动视图中进行触摸事件。另外,有没有办法知道用户是否在拖动或滑动等?谢谢! 听起来你想要类似跳板的东西?您可以通过长按来拖动项目以“抓取”它们,否则滑动会导致滚动?

以上是关于如何阻止 UIScrollView 吞下触摸的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d 2.x如何吞下CCMenuItem的触摸

UIStepper 吞下触摸

在触摸期间停止 UIScrollView 滚动

UITableViewCell 与 UIScrollView 防止单元格触摸

UI Scroll View 内的视图上的触摸事件

阻止UIScrollView中的UISlider触发滚动