5

我有一个 TableViewController:

在此处输入图像描述

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

问题是当我将 TableView 滚动到顶部时,它变得像下面的图像,我不想要它。有什么简单的代码可以限制tableView的滚动吗?

在此处输入图像描述

4

6 回答 6

20

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView == self.tableView) {
        if (scrollView.contentOffset.y < 0) {
            scrollView.contentOffset = CGPointZero;
        }
    }
}
于 2012-10-09T18:42:03.937 回答
4

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

    UITableView  *tableView;
    tableView.bounces = NO;

编辑:请注意,您也可以取消选中界面生成器的反弹

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

于 2012-10-09T18:38:41.853 回答
2

我遇到了同样的问题,问我们的 UX 设计师,怎么做会更好。他说,两种严格的解决方案(防止弹跳或允许弹跳)都是不好的。最好允许弹跳,但仅限于一些空间

我的解决方案是:

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-64并用动画显示它。祝你好运!

于 2017-07-06T13:15:01.033 回答
0

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

于 2012-10-09T18:08:44.087 回答
0

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

更新:

为了使表格视图静态,您需要将其设置为

tableView.scrollEnabled = NO:

让我知道这是否适合您。

于 2012-10-09T18:15:52.903 回答
0

Mattias 回答的 Swift 版本:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if (scrollView == self.ordersTable) {
            if (scrollView.contentOffset.y < 0) {
                scrollView.contentOffset = CGPoint.zero;
            }
        }
    }
于 2021-07-24T16:13:56.750 回答