首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS UITableView 底部禁止拖動、頂部允許下拉刷新:scrollViewDidScroll 判斷 contentOffset

     編輯:程式設計綜合問答

UITableView 繼承 UIScrollView,可透過 UIScrollViewDelegate 監聽滾動狀態。

核心邏輯

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat offsetY = scrollView.contentOffset.y;
    CGFloat maxOffset = scrollView.contentSize.height - scrollView.bounds.height;

    if (offsetY >= maxOffset) {
        // 已滾至底部,鎖定 bouncing
        scrollView.bounces = NO;
    } else if (offsetY <= 0) {
        // 頂部區域,允許下拉
        scrollView.bounces = YES;
    }
}

進階:自訂下拉刷新控件

  • 使用 UIRefreshControl (iOS 6+) 內建下拉刷新,自動處理頂部彈性。
  • 底部載入更多建議用 tableView:willDisplayCell:forRowAtIndexPath: 觸發分頁請求,而非依賴 bounce。

注意

頻繁切換 bounces 可能造成視覺閃爍,建議在 scrollViewWillEndDragging 中配合 decelerationRate 微調,或採用成熟第三方庫 (MJRefresh) 統一處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved