如何实时获取 UITableView 的滚动位置
Posted
技术标签:
【中文标题】如何实时获取 UITableView 的滚动位置【英文标题】:How to get the scroll position of a UITableView in real time 【发布时间】:2016-04-30 23:31:59 【问题描述】:我需要实时获取表格视图的滚动位置。 我目前正在做的是:
func animationOffset()
let offset = tableView.contentOffset.y
这个函数连接到一个定时器
timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(TimelineViewController.animationOffset), userInfo: nil, repeats: true)
如果用户将手指从屏幕上移开,此代码可以正常工作,但如果他们不这样做并继续滚动,则偏移量将永远不会更新,我的应用程序将无法正常运行。
【问题讨论】:
【参考方案1】:你可以实现
func scrollViewDidScroll(scrollView: UIScrollView)
UITableViewDelegate
在 tableview 的滚动位置更改时调用,您可以使用tableView.contentOffset.y
获取滚动位置。
【讨论】:
小心你在这个方法中所做的事情,因为它在每一帧上都会被调用。【参考方案2】:小问题 - 在 Swift 3 中是
func scrollViewDidScroll(_ scrollView: UIScrollView)
并且不会触发以下内容:
func scrollViewDidScroll(scrollView: UIScrollView)
【讨论】:
【参考方案3】:您可以使用以下函数获取可见UITableView项目的First和Last INDEX
每次滚动时,此功能也会自行更新(实时)
func scrollViewDidScroll(_ scrollView: UIScrollView)
//First Visible Item
print(tableView.indexPathsForVisibleRows?.first)
//Last visible item
print(tableView.indexPathsForVisibleRows?.last)
【讨论】:
以上是关于如何实时获取 UITableView 的滚动位置的主要内容,如果未能解决你的问题,请参考以下文章