您的位置:首页 > 产品设计 > UI/UE

UIScrollView 中处理subView点击事件

2013-11-18 11:13 2501 查看
若在UIScollView里面add了若干个SubView,那它将如何处理手势事件呢?

根据文档,UIScollView在用户触摸屏幕后,会设置一个Timer,在一定时间内,若触摸的点没有移动,则将触摸事件传至subView处理,若触摸的点移动后,则会成为ScrollView的滚动事件。

如果在ScollView中加入按钮,且需要实现入tableView时点击后拖曳,取消按钮高亮,响应滚动事件。

ScrollView 需要将canCancelContentTouches 设为YES,
然后重写UIScrolView的方法 -(BOOL)touchesShouldCancelInContentView:(UIView *)view, 当view为你需要取消高亮开始滑动的按钮,就return YES

这样子
当你在150ms的时间按住按钮并没滑动,就进入按钮的高亮事件
当你在150ms的时间按住按钮并滑动,就会响应scrollview的滑动事件,并不将手势传到subview中(按钮)
当你在150ms的时间按住按钮并没滑动,就进入按钮的高亮事件,然后进行滑动,这时候sv会判定canCancelContentTouches 是否为YES,若为YES,询问当前触摸点所在VIew是否能取消手势-(用以下函数)(BOOL)touchesShouldCancelInContentView:(UIView *)view ,若为YES,就取消subview的手势,开始滑动

其中,两个变量有着比较重要的作用

delaysContentTouches的作用:

这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待。

 

cancelsTouches的作用:

这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: