限制UITableView的滚动

我有一个TableViewController:

在此处输入图像描述

如你所见,我在顶部有自己的自定义栏。 UITable View只是一个static视图,我在UITableView的顶部添加了一个视图。

问题是当我将TableView滚动到顶部时,它变得像波纹管图像,我不想要它。 是否有任何简单的代码,我可以限制tableView的滚动?

在此处输入图像描述

由于UITableView是UIScrollView的子类,因此您可以使用此UIScrollViewDelegate方法禁止在顶部边框上方滚动

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView == self.tableView) { if (scrollView.contentOffset.y < 0) { scrollView.contentOffset = CGPointZero; } } } 

你需要将uitableview的反弹属性设置为NO

  UITableView *tableView; tableView.bounces = NO; 

编辑:请注意,您也可以取消选中界面构建器中的退回

请查看此答案以获取更多详细信息滚动时禁用UITableView垂直反弹

如果我理解正确,您已将自定义栏设置为tableview的一部分。 将custom bar放在不在tableview中的单独视图中,并在设置视图时将tableview放在自定义栏下方。 您需要创建具有自定义栏和静态表视图的自定义视图控制器。

您需要创建视图控制器对象作为类型UIViewController而不是UITableViewController 。 然后将自定义栏添加为self.view的子视图。 创建一个单独的UITableView并将其添加到自定义栏下方。 这应该使自定义栏静态和表视图可滚动。

更新:

为了使tableview静态,您需要将其设置为

 tableView.scrollEnabled = NO: 

如果这对您有用,请告诉我。

我遇到了同样的问题,并问我们的UX-Designer,如何做得更好。 他说,两种严格的解决方案(防止弹跳或允许它原样)都很糟糕。 允许弹跳更好但仅限于某些空间

我的解决方案是:

 override func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView == self.tableView { if scrollView.contentOffset.y < -64 { scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -64), size: scrollView.frame.size), animated: false) scrollView.scrollRectToVisible(CGRect(origin: CGPoint.zero, size: scrollView.frame.size), animated: true) } } } 

哪个64对我来说是“一些空间”。 代码从顶部停止tableView at -64并使用动画显示它。 祝你好运!