我想在向下滚动时禁用scrollview
反弹。
当我禁用垂直弹跳时,我无法refresh
我的桌子。
有任何建议如何禁用弹跳,但启用刷新表?
我这样刷新:
self.refreshControl = UIRefreshControl()
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl)
func refresh(sender:AnyObject) {
getJson()
self.tableView.reloadData()
self.refreshControl.endRefreshing()
}
感谢。
答案 0 :(得分:5)
就这样做了:
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.contentOffset.y < 0.0 {
return
}
if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height) {
scrollView.setContentOffset(CGPointMake(scrollView.contentOffset.x, scrollView.contentSize.height - scrollView.frame.size.height), animated: false)
}
}
答案 1 :(得分:0)
在scrollViewDidScroll
中实施UIScrollViewDelegate
方法
extension ViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y > 0 {
scrollView.setContentOffset(CGPoint(x: scrollView.contentOffset.x, y: 0), animated: false)
}
}
}
这允许拉动表视图刷新,但限制了拉动。这样可以消除向上的弹跳。
副作用:这不会让您超出已在视图中显示的单元格,因此您无法向下滚动到不可见的单元格。