一、bool 類型的tracking屬性
用來返回用戶是否已經接觸scrollView 但可能還沒有開始滾動
返回YES表示用戶手指一直接觸著scrollView(包括手指一直拖動scrollView)沒有松開 ? 返回NO表示手指離開scrollView 此時scrollView做自由滾動?
當手指觸摸scrollView 的一瞬間會產生下面事件:
1.tracking屬性變為YES
2.觸摸攔截事件
3.一個內置的計時器開始生效,用來檢測在極短的時間內手指是否發生了移動
如果在時間間隔內沒有發生明顯的滾動,則將觸摸事件傳遞給觸摸的subview上(如果subView可以響應這次觸摸事件,則交給該控件處理)
如果在時間間隔內發生較大距離的拖動,則scrollView處理這次觸摸事件,scrollView發生滾動,手指觸摸下即使有可以處理此次觸摸事件的內部控件,也不會將其傳遞給內部控件響應
二、delaysContentTouches:
的值就是YES,如果為YES,就會延遲處理這個觸摸手勢的意圖,直到確定了在極短時間內是否發生了滾動,如果沒有滾動 ,就把觸摸事件傳遞給觸摸的subview處理 (可以響應事件的控件) ,如果滾動了,則scrollView就會滾動 自身響應觸摸事件
如果為NO,scrollView立馬觸發- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view方法 ,交給用戶自己判斷,此方法返回NO,則scrollView 不會將事件傳遞給view, 返回YES ,表示讓view響應這個觸摸事件 。注意:默認返回YES?
三、canCancelContentTouches:
默認值為YES,如果為YES,當用戶觸摸手勢已經被確定交給subview響應的時候 ,會立即調用- (BOOL)touchesShouldCancelInContentView:(UIView *)view ,交給此方法處理接下來的動作,如果此方法返回NO,則繼續傳遞給subview,scrollView不會滾動,返回YES,則scrollView會滾動 ,subview 會取消處理這個事件?如果返回NO ,則scrollView不會滾動, subview響應這個觸摸事件