美文网首页
判断TableView是否滑动到底部

判断TableView是否滑动到底部

作者: Mage | 来源:发表于2018-06-12 15:18 被阅读66次

判断UITableView是否滑动到底部,一般使用下面的方式判断。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.isDragging {
        let offset = scrollView.contentSize.height - scrollView.ma_height
        let isScrollBottom = offset < 0 || (offset > 0 && offset <= scrollView.contentOffset.y)
        if self.isScrollBottom != isScrollBottom {
            self.isScrollBottom = isScrollBottom
            if self.isScrollBottom == true {
                // 滑动到底部刷新
                footerRefresh()
            }
        }
    }
}

但当需要做上拉刷新时,必须TableView滑动到最底部才能刷新,如果刷新数据不及时的话,会出现很短的卡顿情况。

针对这个问题,可以设置 offset - 10,让footerRefresh提前触发,但这不是最优雅的方式。UITableView有个visibleCells属性,咱们可以通过判断界面上显示的最后一个cell所持有的model是不是TableView的数据源中的最后一个model来判断TableView是否滚动到底部。代码如下:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.isDragging, let cell : ChatViewCell = tableView.visibleCells.last as? ChatViewCell, let message = cell.message , let last = tableView.models.last {
        let isScrollBottom = message == last
        if self.isScrollBottom != isScrollBottom {
            self.isScrollBottom = isScrollBottom
        }
        if self.isScrollBottom == true {
            // 滑动到底部刷新
            footerRefresh()
        }
    }
}

相关文章

网友评论

      本文标题:判断TableView是否滑动到底部

      本文链接:https://www.haomeiwen.com/subject/gpaleftx.html