知識點:
1伶贰、delaysContentTouches:是否延遲判斷子視圖觸碰事件
2坤候、touchesShouldBegin:withEvent:inContentView:是否讓子視圖接受觸碰事件
3照卦、canCancelContentTouches 是否可以取消子視圖觸碰事件
4爬范、touchesShouldCancelInContentView: 觸碰事件是否可以取消
白話文流程圖,通俗易懂
歸納:
簡稱:
A痪宰、delaysContentTouches
B行疏、touchesShouldBegin:withEvent:inContentView:
C匆光、canCancelContentTouches
D、touchesShouldCancelInContentView:
一酿联、UIScrollView響應(yīng):
情況1:當(dāng)A=YES,快速滾動
情況2:當(dāng)A=YES,沒有快速滾動,B返回NO
情況3:當(dāng)A=NO,B返回NO
情況4:當(dāng)A=NO,B返回YES,C返回YES,D返回YES
二终息、子視圖響應(yīng):
情況1:當(dāng)A=YES,沒有快速滾動,B返回YES,C返回NO
情況2:當(dāng)A=YES,沒有快速滾動,B返回YES,C返回YES,D返回NO
情況3:當(dāng)A=NO,B返回YES,C返回NO
情況4:當(dāng)A=NO,B返回YES,C返回YES,D返回NO
常用開發(fā):
需求為:需要實現(xiàn)UIScrollView上的子視圖的觸碰事件,則代碼如下:
self.scroll_bottom.delaysContentTouches = NO;//延遲響應(yīng)接觸事件
self.scroll_bottom.canCancelContentTouches = NO;//取消傳遞接觸事件,
- (BOOL)touchesShouldBegin:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
//同類控件區(qū)分方法if(view.tag == 1)
//不同類控件區(qū)分方法if ([view.class isEqual:[XXX class]])
if ([view.class isEqual:[UILabel class]])
{
return NO;
}
else
{
return YES;
}
return YES;
}