Swift-UITableView滚动事件

Swift-UITableView滚动事件,uitableview,swift,events,scroll,hide,Uitableview,Swift,Events,Scroll,Hide,我想知道如何检测UITableView是否被滚动(向上或向下)。 当使用self.view.endEditing(true)滚动UITableView时,我想隐藏键盘 提前感谢您可以添加UIScrollViewDelegate。之后,您可以实现scrollViewDidScroll方法。覆盖函数ScrollViewWillendDraging(scrollView:UIScrollView,withVelocity:CGPoint,targetContentOffset:Unsafemeutab

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


提前感谢

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

覆盖函数ScrollViewWillendDraging(scrollView:UIScrollView,withVelocity:CGPoint,targetContentOffset:UnsafemeutablePointer){
override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

        if(velocity.y>0){
            NSLog("dragging Up");
        }else{
            NSLog("dragging Down");
        }
    }
如果(速度y>0){ NSLog(“拖动”); }否则{ NSLog(“向下拖动”); } }
您可以设置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%准确


说明:滚动停止时将调用ScrollViewDiEndDraging,因此我们保存最后知道的偏移量。之后,我们将其与委托方法scrollViewDidScroll中的当前偏移量进行比较。
UITableView
扩展自
UIScrollView
,因此它应该被视为是一个函数,因为OP假设必须实现某个scrollview委托方法以关闭键盘。但作为丹尼尔,有一个更简单的解决方案。这个问题最好用“如何消除滚动上的键盘”来表达,当调用NSLog(“向上拖动”)时,我如何管理tableview@Jamil的高度;它是scrollview的最后一个已知偏移位置,用于与新位置进行比较。它可以让你识别运动。正如在scrollViewDidScroll@Dilip Tiwari中看到的,你能帮我解决一个与这个@Giggsi有关的问题吗?我在tableview滚动@Giggsi时遇到了一个问题。你的问题是什么@Dilip TiwariI有个问题,在我的视图控制器中,我在tableview中的tableviewcell上方拖动了一个视图,其中包含3个文本字段,在tableview上面,我有一个集合视图。我的问题是,当我将整个视图控制器滚动到顶部时,我想隐藏集合视图以及包含这3个文本字段的视图。同时创建一个新的文本字段,并且tableview的位置将刚好在新文本字段的下方,当向下滚动视图控制器时新的文本字段将隐藏,其他内容将以滚动前的相同位置再次显示。@Giggs就像一个符咒。有史以来最好的解决方案!伟大而简单的解决方案你应该成为美国总统。