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];