scrollViewDidScroll:在UITableViewRowAnimation上?

如果在删除行或添加行时使用UITableViewRowAnimation ,有时如果此行位于tableview的极值,则表格会滚动。

然而,即使它滚动它似乎并没有调用scrollViewDidScroll: on委托。

例如,我的代理中有以下代码。

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

如果用户滚动,则会调用它。 但是当我删除一行时:

 [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

scrollViewDidScroll:不调用scrollViewDidScroll:方法。

有没有办法确保在UITableView动画时调用它?

谢谢!

如果您不知道,只调用scrollViewDidScroll以响应用户与滚动视图(或在本例中为表视图)的交互。 由于动画而不响应滚动而调用它。 此行为是固定的。 你需要找到另一种方法来实现你所追求的目标。 也许这个现有问题可能有用:

如何使UIScrollView在动画期间发送scrollViewDidScroll消息

您可以使用以下方法。

  [CATransaction setCompletionBlock: ^{ // do stuff }]; [CATransaction begin]; [tableView beginUpdates]; [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; [tableView endUpdates]; [CATransaction commit];