知识点:
1、delaysContentTouches:是否延迟判断子视图触碰事件
2、touchesShouldBegin:withEvent:inContentView:是否让子视图接受触碰事件
3、canCancelContentTouches 是否可以取消子视图触碰事件
4、touchesShouldCancelInContentView: 触碰事件是否可以取消
白话文流程图,通俗易懂
归纳:
简称:
A、delaysContentTouches
B、touchesShouldBegin:withEvent:inContentView:
C、canCancelContentTouches
D、touchesShouldCancelInContentView:
一、UIScrollView响应:
情况1:当A=YES,快速滚动
情况2:当A=YES,没有快速滚动,B返回NO
情况3:当A=NO,B返回NO
情况4:当A=NO,B返回YES,C返回YES,D返回YES
二、子视图响应:
情况1:当A=YES,没有快速滚动,B返回YES,C返回NO
情况2:当A=YES,没有快速滚动,B返回YES,C返回YES,D返回NO
情况3:当A=NO,B返回YES,C返回NO
情况4:当A=NO,B返回YES,C返回YES,D返回NO
常用开发:
需求为:需要实现UIScrollView上的子视图的触碰事件,则代码如下:
self.scroll_bottom.delaysContentTouches = NO;//延迟响应接触事件
self.scroll_bottom.canCancelContentTouches = NO;//取消传递接触事件,
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
//同类控件区分方法if(view.tag == 1)
//不同类控件区分方法if ([view.class isEqual:[XXX class]])
if ([view.class isEqual:[UILabel class]])
{
return NO;
}
else
{
return YES;
}
return YES;
}