我正在使用UITableView的selectRowAtIndexPath:animated:scrollPosition将我的一些UITableViewCells放到用户选择它们的位置。动画完成后,我想在单元格上显示一些额外的元数据。我遇到的问题是我似乎无法找出确定UITableView是否实际滚动的方法,以便可以调用我的元数据绘制例程(在scrollViewDidEndScrollingAnimation中)。如果单元格的位置恰好是用户选择单元格时的位置,则不需要动画,并且永远不会调用scrollViewDidEndScrollingAnimation。是否有一种简单的方法来确定如果 UITableView不需要滚动,或者我是否需要在调用selectRowAtIndexPath时手动执行所有这些计算?我不禁想到,我错过了一些简单的方法来做出这个决定。
(注意:我不想自己进行计算的一个原因是我的行大小不同,并确定滚动偏移是否位于应有的位置有点麻烦)
答案 0 :(得分:1)
一种方法是使用延迟性能。存储当前contentOffset
。使用selectRowAtIndexPath:animated:scrollPosition:
进行选择,然后立即拨打performSelector:withObject:afterDelay:
,延迟时间非常短(比方说0.1)。在使用performSelector:...
调用的方法中,再次询问当前的contentOffset
。如果它没有改变,我想你可能会认为它不会 - 我们不会滚动!因此,您现在可以继续进行元数据显示。如果它已经改变,那么就什么也不做,让你的scrollViewDidEndScrollingAnimation
来处理它。
我知道这看起来有些笨拙,但我发现自己使用延迟性能来解决这类自动动画。