我有一个TableViewController:
如您所见,我在顶部有自己的自定义栏。
UITable View只是一个static
,我在UITableView的顶部添加了一个视图。
问题是当我将TableView滚动到顶部时,它变得像波纹管图像,我不想要它。是否有任何简单的代码,我可以限制tableView的滚动?
答案 0 :(得分:19)
由于UITableView是UIScrollView的子类,因此您可以使用此UIScrollViewDelegate方法禁止在顶部边框上方滚动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.tableView) {
if (scrollView.contentOffset.y < 0) {
scrollView.contentOffset = CGPointZero;
}
}
}
答案 1 :(得分:4)
Yo需要将uitableview的反弹属性设置为NO
UITableView *tableView;
tableView.bounces = NO;
编辑:请注意,您也可以取消选中界面构建器中的退回
请查看此答案以获取更多详细信息Disable UITableView vertical bounces when scrolling
答案 2 :(得分:2)
我遇到了同样的问题,并问我们的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
对我来说是“某种空间”。代码从顶部停止-64
的tableView,并用动画显示它。
祝你好运!
答案 3 :(得分:0)
如果我理解正确,您已将自定义栏设置为tableview的一部分。将您的custom bar
置于不在tableview中的单独视图中,并在设置视图时将tableview放在自定义栏下方。您需要创建自定义视图控制器,它将包含您的自定义栏和静态表视图。
答案 4 :(得分:0)
您需要将视图控制器对象创建为UIViewController
类型,而不是UITableViewController
。然后将自定义栏添加为self.view
的子视图。创建一个单独的UITableView
并将其添加到自定义栏下方。这应该使自定义栏静态和表格视图可滚动。
<强>更新强>
为了使tableview成为静态,你需要将其设置为
tableView.scrollEnabled = NO:
请告诉我这是否适合您。
答案 5 :(得分:0)
Mattias 答案的 Swift 版本:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (scrollView == self.ordersTable) {
if (scrollView.contentOffset.y < 0) {
scrollView.contentOffset = CGPoint.zero;
}
}
}