如果在删除行或添加行时使用UITableViewRowAnimation
,有时如果此行位于tableview的极端,则表格会滚动。
然而,即使它滚动它似乎也没有在代表上调用scrollViewDidScroll:
。
例如,我的代理中有以下代码。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"Scrolling %f", scrollView.contentOffset.y);
}
如果用户滚动,则会调用它。 但是当我删除一行时:
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
根本不会调用scrollViewDidScroll:
方法。
有没有办法确保在UITableView
动画时调用它?
谢谢!
答案 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];