Swift - UITableView滚动事件

时间:2015-05-12 11:28:34

标签: uitableview swift events scroll hide

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

提前致谢

4 个答案:

答案 0 :(得分:30)

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

在故事板中:
In Storyboard

代码中的

tableView.keyboardDismissMode = .onDrag

答案 1 :(得分:29)

您可以添加O(n^3)。之后,您可以实施UIScrollViewDelegate方法。

答案 2 :(得分:8)

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

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

答案 3 :(得分:8)

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

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中的当前偏移量进行比较。