UITableView、UICollectionView 滾動結束的監(jiān)測(類似ViewDidAppear)

一、開始滑動:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    NSLog(@"??滑動,滑動。。。");
#ifdef DEBUG

#else
    // 《友盟 統(tǒng)計》統(tǒng)計UIScrollView的滑動
    [MobClick event:@"haha_scrollView_slide" label:@"UIScrollView滑動"];
#endif
}

二、滑動停止:

怎么檢測UICollectionView停止?jié)L動成了問題(停止?jié)L動后展示完整信息)。

經(jīng)過調(diào)查,發(fā)現(xiàn)UICollectionView有3種停止?jié)L動類型,分別是:1、快速滾動,自然停止;2、快速滾動,手指按壓突然停止;3、慢速上下滑動停止。

第1種類型在UIScrollView 的Delegate可檢測:

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView

但第2、第3種卻沒有暴露方法供使用,但會觸發(fā)Delegate:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

繼續(xù)分析,UIScrollView有三個Bool類型屬性:tracking、dragging、decelerating,在滾動和結束滾動時都有自己的值。

在3種動作觸發(fā)的兩個方法中,tracking、draggingdecelerating 的Bool值分別為:

停止類型1:DidEndDecelerat:0,dragging:0,decelerating:0

停止類型2:DidEndDragging:tracking:1,dragging:0,decelerating:1

         DidEndDecelerat:tracking:0,dragging:0,decelerating:0

停止類型3:DidEndDragging:tracking:1,dragging:0,decelerating:0

上面三種動作結束后,只要捕捉到tracking、dragging、decelerating的1個組合即可監(jiān)測到UICollectionView的停止?jié)L動。

具體實現(xiàn)如下:

#pragma mark - UIScrollDelegate

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    // 停止類型1、停止類型2
    BOOL scrollToScrollStop = !scrollView.tracking && !scrollView.dragging &&    !scrollView.decelerating; 
    if (scrollToScrollStop) {
       NSLog(@"????????滾動結束");
    }
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
       // 停止類型3
       BOOL dragToDragStop = scrollView.tracking && !scrollView.dragging && !scrollView.decelerating;
       if (dragToDragStop) {
          NSLog(@"????????滾動結束");
       }
  }
}


最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容