scrollViewDidScroll:在UITableViewRowAnimation上?

时间:2014-03-25 23:03:58

标签: ios iphone uitableview uiscrollview

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

然而,即使它滚动它似乎也没有在代表上调用scrollViewDidScroll:

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

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

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

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

根本不会调用scrollViewDidScroll:方法。

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

How to make UIScrollView send scrollViewDidScroll messages during animations

答案 1 :(得分:0)

您可以改用以下方法。

    [CATransaction setCompletionBlock: ^{
        // do stuff
    }];

    [CATransaction begin];

    [tableView beginUpdates];
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
    [tableView endUpdates];

    [CATransaction commit];