react-native scrollview觸摸滾動事件

一、幾個已知的滑動或者滑動開始結束的方法:

  1. onScroll:在滾動過程當中, 每幀最多調用一次此函數, 調用的頻率能夠用scrollEventThrottle屬性來控制.
  2. onMomentumScrollEnd:當一幀滾動完畢時調用.
  3. onScrollAnimationEnd :ios上的當滾動動畫結束時調用.

二、還有其餘的一些事件以下

觸摸事件裏面有攜帶event,你們能夠再下面的方法裏面更改一些view操做就能夠打印出來這些event攜帶的信息了ios

  1. onScrollBeginDrag:一個子view滑動開始 拖動時觸發,注意和onMomentumScrollBegin的區別
  2. onScrollEndDrag:一個子view滾動結束 拖拽時觸發,注意和onMomentumScrollEnd的區別
  3. onTouchStart:按下屏幕時觸發
  4. onTouchMove:移動手指時觸發
  5. onTouchEnd:手指離開屏幕觸摸結束時觸發
  6. onMomentumScrollBegin:當一幀滾動開始時調用.
  7. onMomentumScrollEnd:當一幀滾動完畢時調用.
  8. onStartShouldSetResponder:觸摸開始時是否成爲響應者
  9. onStartShouldSetResponderCapture:防止子視圖在觸摸開始時成爲應答器
  10. onScrollShouldSetResponder:滾動時是否成爲響應者
  11. onResponderGrant:開始響應時觸發
  12. onResponderRelease:手指釋放後,視圖成爲響應者
  13. onResponderReject:響應拒絕
  14. onScroll:滾動時觸發,會觸發屢次

三、下面就這些方法的順序作個簡單的介紹:

首先在ios上進行測試,測試的結果以下:
scrollview-ios函數

由上圖能夠看出執行的順序,測試

  1. 首先是按下屏幕時觸發onTouchStart,
  2. 而後手指移動觸發onTouchMove,會調用一次或者屢次,
  3. 若是左右滑動,滑動開始拖動觸發onScrollBeginDrag,View開始變化,View成爲響應者,
  4. 而後onScroll … onTouchMove這兩個會觸摸屢次,
  5. 而後手指離開屏幕觸發onResponderRelease,
  6. 接着觸摸結束onTouchEnd
  7. 而後是滑動結束拖拽時觸發onScrollEndDrag,接着就是一幀滾動的開始onMomentumScrollBegin,它的起始位置和onScrollEndDrag的結束位置重合;
  8. 而後是滾動滾動onScroll,
  9. 而後是一幀滾動的結束onMomentumScrollEnd,
  10. 最後偶爾還會滾動下onScroll,這個有時間不出來,我以爲跟有抖動同樣

四、android上的時間分爲兩種,一個是滑動一次,一個是連續滑動兩次甚至屢次,詳見下圖:

4.一、滑動一次

scrollview-android滑動一次的結果

你們能夠看出和ios的區別動畫

  1. 少了個觸摸結束onTouchEnd,onResponderGrant、onResponderRelease,這三個.
    直接就是觸摸開始-->移動-->開始拖拽-->滾動-->拖拽結束(手指離開了)-->一幀滾動開始-->滾動-->一幀滾動結束-->滾動3d

  2. 若是不滑動,只是點擊離開,只會觸發onTouchStart和onTouchEnd;code

4.二、滑動兩次或者屢次:

scrollview-android滑動2次的結果

相關文章
相關標籤/搜索