有类似的问题Stop UITableView over scroll at top & bottom?,但我需要略微不同的功能。我想要我的桌子,以便它可以在底部过度滚动,但不能在顶部过度滚动。 据我了解,
tableView.bounces = false
允许在顶部和底部禁用过度滚动,但是,我只需要在顶部禁用此功能。像
tableView.bouncesAtTheTop = false
tableView.bouncesAtTheBottom = true
答案 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
:
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
}