0

我有一个 TableView,它有这么多 TableViewCell,但是在 TableView 结束时我想编写一个代码,使 tableview 偏移变为零,所以 tableview 回到顶部

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (scrollView.contentOffset.y <=-30) {
    [self dosomething];
}
else if(scrollView.contentOffset.y >=1150){
    [tableViewA setContentOffset:CGPointZero animated:YES];//this code is called and yet offset doesn't become 0
}
}

所以用这段代码,如果用户弹到顶部,它会调用dsomething函数,如果我们弹到底部,它会在顶部创建一个tableViewA,但它仍然在底部。如果我没记错的话,tableView 会再次反弹到底部。任何人都可以给我一个线索?

4

1 回答 1

0

我尝试了您的代码,发现 tableview 确实将其 contentOffset 设置为 (0,0) 但它将继续拖动动画。似乎在滚动动画期间,tableview 动画并同时更改其边界以调用 layoutSubviews每次边界改变。因此,即使 contentOffset 设置为 (0,0),但在此之后,边界设置为新值以继续滚动动画。

也许你可以试试

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    [self setContentOffset:CGPointZero animated:YES];
}
于 2011-08-05T14:39:34.047 回答