scrollViewDidScroll:在 UITableViewRowAnimation 上?

Arj*_*hta 5 iphone uitableview uiscrollview ios

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

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

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

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

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

[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)

scrollViewDidScroll:方法根本没有被调用。

有什么方法可以确保在UITableView动画时调用它吗?

谢谢!

lxt*_*lxt 0

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

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

  • 顺便说一句,我不知道您关于仅响应用户交互而调用它的评论是否正确。如果你执行类似 [scrollView setContentOffset:aCGPointanimated:YES]; 的操作 scrollViewDidScroll 确实被触发。 (4认同)