限制UITableView的滚动

时间:2012-10-09 17:52:23

标签: iphone objective-c ios xcode interface-builder

我有一个TableViewController:

enter image description here

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

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

enter image description here

6 个答案:

答案 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;
            }
        }
    }