Swift - UITableView滚动事件

Kaa*_*ter 18 events scroll hide uitableview swift

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

提前致谢

小智 34

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

在故事板中:
在故事板中

代码:

tableView.keyboardDismissMode = .onDrag
Run Code Online (Sandbox Code Playgroud)


rid*_*cuk 31

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

  • 没有在swift工作2.任何人都可以详细说明吗? (2认同)
  • UITableView是从UIScrollView扩展而来的,因此应该是 (2认同)

Gig*_*ggs 10

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

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

以前的答案不是100%准确.

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


Jam*_*mil 8

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

        if(velocity.y>0){
            NSLog("dragging Up");
        }else{
            NSLog("dragging Down");
        }
    }
Run Code Online (Sandbox Code Playgroud)