我想在UIScrollview上实现“pull down to refresh”类型效果。在检测到滚动视图的“顶部”反弹时,视图应刷新一些组件。 如何检测UIScrollview的“顶部反弹”?我尝试了委托“scrollViewWillBeginDragging”,但没有用。
答案 0 :(得分:15)
实现scrollViewDidScroll:,并检查scrollView.contentOffset.y的值 - 当你向下拉时它将是负数,并在它反弹时返回0(或接近0)。根据您要满足的条件进行刷新,您可以在该值达到特定负值时设置一个标志,然后在它返回到接近0时进行刷新。这样的事情:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.contentOffset.y < -50) _metNegativePullDown = YES;
if (fabs(scrollView.contentOffset.y) < 1 && _metNegativePullDown) {
//do your refresh here
_metNegativePullDown = NO;
}
}
答案 1 :(得分:0)
为了记录,我正在使用以下类别在Swift 4上检测到两个弹跳:
extension UIScrollView {
var isBouncing: Bool {
var isBouncing = false
if contentOffset.y >= (contentSize.height - bounds.size.height) {
// Bottom bounce
isBouncing = true
} else if contentOffset.y < contentInset.top {
// Top bounce
isBouncing = true
}
return isBouncing
}
}
需要考虑的事情