如何检测UITableView标题何时滚动?

时间:2017-05-16 01:13:07

标签: swift uitableview uiscrollview uistoryboard

我目前有一个UITableView,其HeaderView是一个UIScrollView。我使用它作为一种旋转木马,每两秒显示一次不断旋转的信息触发定时器。我想要做的是检测用户何时自己移动了滚动视图。这是我现在必须处理ScrollView运动的代码。

override func viewDidLoad() {
    var myTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(runTimedCode), userInfo: nil, repeats: true)
}
func runTimedCode() {
    var itemCount = newsArray.count // how many items are in the news reel
    if currentPage < itemCount {
        let newX = CGFloat(currentPage) * self.view.frame.width // calculate next page position
        featuredScrollView.setContentOffset(CGPoint(x: newX, y: 0), animated: true)
        currentPage += 1
    } else {
        // end of items
        currentPage = 0
        let newX = CGFloat(currentPage) * self.view.frame.width // calculate next page position
        print("new x = \(newX)")
        featuredScrollView.setContentOffset(CGPoint(x: newX, y: 0), animated: true)
    }
}

但是只有在移动tableview时才会调用scrollViewDidScroll函数。有没有办法检测何时滚动tableView上方的ScrollView?我完全坚持这一点任何帮助表示赞赏。谢谢!

Interface Builder view

1 个答案:

答案 0 :(得分:1)

首先,确保设置了委托,以便视图控制器从滚动视图和表视图中获取事件。

接下来,保留引用以确保您可以区分这两个视图。

最后,检查哪个引用正在触发viewdidscroll函数并在那里执行代码。

let view1:UIScrollView!
let view2:UITableView!

view1.delegate = self
view2.delegate = self

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView == view1 {
        // Do something
    }
    if scrollView == view2 {
        // Do something
    }
}