scrollViewDidEndScrollingAnimation没有被调用

时间:2013-01-21 10:23:57

标签: ios uiscrollview

我希望在scrollview完成滚动时执行一些操作,因此我在scrollViewDidEndScrollingAnimation委托方法中编写了该acton。当rect不可见时,它正常工作,scrollview滚动到新的rect。但是当rect已经可见时scrollViewDidEndScrollingAnimation方法将不会被调用,因此scrollViewDidEndScrollingAnimation内写的方法将不会被调用。但是我想调用那个动作,当scrollview完成滚动时,是否有人知道如何调用该方法?

提前致谢!

2 个答案:

答案 0 :(得分:3)

我认为这个会吸引一些人。实际发生的情况是scrollViewDidEndScrollingAnimation仅在您明确调用setContentOffset:animated:scrollRectToVisible:animated:方法时才会被调用。

正如UIScrollViewDelegate Protocol Reference所述:

  

<强>讨论
  滚动视图在其结尾处调用此方法   setContentOffset的实现:animated:和   scrollRectToVisible:animated:methods,但仅限于动画   请求的

那该怎么办?好吧,我们不要忘记通常在滚动视图中对内容数据的偏移不是动画的。相反,它是不断更新contentOffset值的结果。因此,您可以使用contentOffset委托方法根据特定scrollViewDidScroll:触发您的方法。

或者,如果要在每个滚动手势之后完成某些操作 - 特别是在私人UIScrollViewPanGestureRecognizer之后 - 那么您可以在scrollViewDidEndDecelerating:中执行此操作:

  

讨论
滚动视图在滚动时调用此方法   运动停止 。 UIScrollView的减速属性   控制减速。

答案 1 :(得分:1)

实现 scrollViewDidEndDecelerating: scrollViewDidEndDragging:

&#xA;&#xA;
   - (void)scrollViewDidEndDecelerating:(UIScrollView *)滚动视图&#XA; {&#XA; //用户在滚动时抬起手指&#xA; [self doPostScrollAction];&#xA;}&#xA;&#xA;(void)scrollViewDidEndDragging :( UIScrollView *)scrollView willDecelerate:(BOOL)减速&#xA; {&#xA;如果(减速!)&#XA; {&#XA; //用户在停止滚动后抬起手指&#xA; [self doPostScrollAction];&#xA; }&#XA;}&#XA;  
&#XA;