当在删除一行或添加一行时使用UITableViewRowAnimation时,有时如果该行位于tableview的最末端,则表会滚动。

然而,即使它滚动了,它似乎也没有在委托(delegate)上调用scrollViewDidScroll:

例如,我的委托(delegate)中有以下代码。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog(@"Scrolling %f", scrollView.contentOffset.y);
}

如果用户滚动,哪个会被调用。
但是当我删除一行时:
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

根本不调用scrollViewDidScroll:方法。

有什么方法可以确保在UITableView设置动画时调用此函数?

谢谢!

最佳答案

如果您不知道,则仅在响应用户与滚动 View (或在这种情况下为表 View )的交互时才调用scrollViewDidScroll。由于动画而未响应滚动而调用它。此行为是固定的。您需要找到另一种方式来实现自己的目标。也许这个现有的问题可能有用:

How to make UIScrollView send scrollViewDidScroll messages during animations

10-08 05:54