Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何实时获取UITableView的滚动位置_Ios_Swift_Uitableview_Uikit_Contentoffset - Fatal编程技术网

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

Ios 如何实时获取UITableView的滚动位置,ios,swift,uitableview,uikit,contentoffset,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,

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

func animationOffset() {
    let offset = tableView.contentOffset.y
}
此功能与计时器相连

timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(TimelineViewController.animationOffset), userInfo: nil, repeats: true)
如果用户将手指从屏幕上移开,此代码可以正常工作,但如果用户不这样做并继续滚动,则偏移量将永远不会更新,并且我的应用程序将无法正常运行。

您可以实现

func scrollViewDidScroll(scrollView: UIScrollView)

更改tableview的滚动位置时调用的
UITableViewDelegate
,您可以使用
tableview.contentOffset.y
获取滚动位置。

小问题-在Swift 3中

func scrollViewDidScroll(_ scrollView: UIScrollView)
并且不会触发以下事件:

func scrollViewDidScroll(scrollView: UIScrollView)

您可以使用下面的功能获取可见UITableView项目的第一个最后一个索引

每次滚动时,此功能也会自动更新(实时)


但是,在这个方法中要小心,因为它在每一帧上都被调用。
func scrollViewDidScroll(_ scrollView: UIScrollView){
    //First Visible Item
    print(tableView.indexPathsForVisibleRows?.first)

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