Swift - UITableView 滚动事件

Swift - UITableView scroll event

我想知道如何检测 UITableView 是否滚动(向上或向下)。 当 UITableView 滚动 self.view.endEditing(true) 时,我想隐藏键盘。

提前致谢

您可以添加 UIScrollViewDelegate。之后你可以实现 scrollViewDidScroll 方法。

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

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

您可以设置 属性 UITable 视图 (XCode 7+)

在情节提要中:

在代码中:

tableView.keyboardDismissMode = .onDrag

我相信完整的解决方案如下:

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)
    }
}

之前的答案并非 100% 准确。

说明:滚动停止时将调用 scrollViewDidEndDragging,因此我们保存最后知道的偏移量。之后我们将它与委托方法 scrollViewDidScroll.

中的当前偏移量进行比较