如何实时获取UITableView的滚动位置

时间:2016-04-30 23:32:00

标签: ios swift uitableview uikit contentoffset

我需要实时获取表格视图的滚动位置。 我目前正在做的是:

func animationOffset() {
    let offset = tableView.contentOffset.y
}

此功能连接到计时器

timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(TimelineViewController.animationOffset), userInfo: nil, repeats: true)

如果用户将手指从屏幕上抬起,此代码可以正常工作,但如果他们不这样做并继续滚动,则偏移将永远不会更新,我的应用将无法正常运行。

3 个答案:

答案 0 :(得分:13)

您可以实施

func scrollViewDidScroll(scrollView: UIScrollView)
当tableview的滚动位置发生变化时调用UITableViewDelegate

,您可以使用tableView.contentOffset.y来获取滚动位置。

答案 1 :(得分:3)

小问题 - 在Swift 3中它是

func scrollViewDidScroll(_ scrollView: UIScrollView)

以下不会被触发:

func scrollViewDidScroll(scrollView: UIScrollView)

答案 2 :(得分:0)

通过使用下面的功能,您可以获得 UITableView 项的第一最后 索引

  

此功能还会在每次滚动(实时)时自动更新

func scrollViewDidScroll(_ scrollView: UIScrollView){
    //First Visible Item
    print(tableView.indexPathsForVisibleRows?.first)

    //Last visible item
    print(tableView.indexPathsForVisibleRows?.last)
}