停止仅在顶部过度滚动UITableView?

时间:2016-06-25 15:54:27

标签: ios objective-c swift uitableview

有类似的问题Stop UITableView over scroll at top & bottom?,但我需要略微不同的功能。我想要我的桌子,以便它可以在底部过度滚动,但不能在顶部过度滚动。 据我了解,

tableView.bounces = false

允许在顶部和底部禁用过度滚动,但是,我只需要在顶部禁用此功能。像

tableView.bouncesAtTheTop = false
tableView.bouncesAtTheBottom = true

2 个答案:

答案 0 :(得分:8)

对于Swift 2.2,请使用

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView == self.tableView {
        if scrollView.contentOffset.y <= 0 {
            scrollView.contentOffset = CGPoint.zero
        }
    }
}

对于目标C

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

}

答案 1 :(得分:3)

您可以通过更改tableView的bounce中的scrollViewDidScroll属性来实现它(您需要成为tableView的委托)

拥有lastY的属性:

var lastY: CGFloat = 0.0

viewDidLoad

中将初始退回设置为false
tableView.bounces = false

func scrollViewDidScroll(scrollView: UIScrollView) {
    let currentY = scrollView.contentOffset.y
    let currentBottomY = scrollView.frame.size.height + currentY
    if currentY > lastY {
        //"scrolling down"
        tableView.bounces = true
    } else {
        //"scrolling up"
        // Check that we are not in bottom bounce
        if currentBottomY < scrollView.contentSize.height + scrollView.contentInset.bottom {
            tableView.bounces = false
        }
    }
    lastY = scrollView.contentOffset.y
}