isTracking:當(dāng)有手指接觸著scrollView時(shí),是YES,否則為NO;
scrollView判斷觸摸事件是滾動(dòng)時(shí),要經(jīng)過下面的步驟:
- isTracking設(shè)置為YES;
- 觸摸攔截事件;
- 一個(gè)內(nèi)置的計(jì)時(shí)器開始生效,用來在極短的時(shí)間內(nèi)判斷手指是否移動(dòng)。如果沒有發(fā)生移動(dòng),判斷為scrollView沒有發(fā)生滾動(dòng),就將觸摸時(shí)間傳遞給觸摸的子視圖上,如果子視圖能夠響應(yīng)該觸摸時(shí)間,就有子視圖來處理;如果判斷為發(fā)生了移動(dòng),則由scrollView來處理觸摸事件,不會(huì)再傳遞給內(nèi)部的子視圖。
delaysContentTouches:
- 默認(rèn)值是YES。如果是YES,scrollView就會(huì)延遲處理觸摸事件,如果沒有滾動(dòng),就將觸摸事件傳遞給子視圖;如果發(fā)生滾動(dòng),就不會(huì)再傳遞給子視圖。
- 如果值是NO,當(dāng)觸摸scrollView時(shí),會(huì)立即觸發(fā)
- (BOOL)touchesShouldBegin:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view,這個(gè)返回值是YES,scrollView就會(huì)將觸摸事件傳遞給子視圖;值是NO,則不會(huì)將觸摸事件傳遞給子試圖。這個(gè)方法只有在scrollView有子視圖并且觸摸事件發(fā)生在子視圖所在的區(qū)域內(nèi)才會(huì)被調(diào)用。簡單滴說,這個(gè)屬性可以用來設(shè)置可以設(shè)置子視圖立即接受觸摸事件。
canCancelContentTouches:
-默認(rèn)值是YES,如果用戶的觸摸手勢判斷為不是滾動(dòng)并把觸摸事件傳遞給了子視圖,之后scrollView會(huì)調(diào)用- (BOOL)touchesShouldCancelInContentView:(UIView *)view這個(gè)方法,這個(gè)方法的默認(rèn)值與子視圖有關(guān),如果子視圖不是UIControl,默認(rèn)返回值是YES,如果子視圖是UIControl,默認(rèn)返回值是NO。- (BOOL)touchesShouldCancelInContentView:(UIView *)view這個(gè)方法的返回值是YES時(shí),當(dāng)手指移動(dòng)了足夠的距離,子視圖會(huì)調(diào)用-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event然后scrollVIew會(huì)繼續(xù)滾動(dòng),返回值是NO時(shí)子試圖不會(huì)調(diào)用-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event,scrollView也不會(huì)發(fā)生滾動(dòng)。
參考 參考