简体   繁体   English

Swift - UITableView滚动事件

[英]Swift - UITableView scroll event

I was wondering how to detect if the UITableView is scrolled (up or down). 我想知道如何检测UITableView是否滚动(向上或向下)。 I want to hide the keyboard when the UITableView is scrolled with self.view.endEditing(true) . 我想在使用self.view.endEditing(true)滚动UITableView时隐藏键盘。

Thanks in advance 提前致谢

You can set property of UITable view (XCode 7+) 您可以设置UITable视图的属性(XCode 7+)

In Storyboard: 在故事板中:
在故事板中

in Code: 代码:

tableView.keyboardDismissMode = .onDrag

You can add UIScrollViewDelegate . 您可以添加UIScrollViewDelegate After that you can implement scrollViewDidScroll method. 之后,您可以实现scrollViewDidScroll方法。

I believe the complete solution would be the following: 我相信完整的解决方案如下:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView == feedTableView {
        let contentOffset = scrollView.contentOffset.y
        print("contentOffset: ", contentOffset)
        if (contentOffset > self.lastKnowContentOfsset) {
            print("scrolling Down")
            print("dragging Up")
        } else {
            print("scrolling Up")
            print("dragging Down")
        }
    }
}

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if scrollView == feedTableView {
        self.lastKnowContentOfsset = scrollView.contentOffset.y
        print("lastKnowContentOfsset: ", scrollView.contentOffset.y)
    }
}

The previous answers weren't 100% accurate. 以前的答案不是100%准确。

Explanation: scrollViewDidEndDragging will be called when the scrolling stops, therefore we save the last know offset. 说明:滚动停止时将调用scrollViewDidEndDragging,因此我们保存最后知道的偏移量。 After that we compare it with the current offset in the delegate method scrollViewDidScroll. 之后,我们将它与委托方法scrollViewDidScroll中的当前偏移量进行比较。

override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

        if(velocity.y>0){
            NSLog("dragging Up");
        }else{
            NSLog("dragging Down");
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM