我想在scrollview完成滚动时执行一些操作,所以我在scrollViewDidEndScrollingAnimation委托方法中编写了acton。当rect不可见并且滚动视图滚动到新的rect时,它工作得很好。但是,当scrollViewDidEndScrollingAnimation已经可见时,将不会调用scrollViewDidEndScrollingAnimation方法,因此不会调用在rect中编写的方法。但是我想调用这个动作,有谁知道如何在scrollview完成滚动时调用这个方法吗?
提前感谢!
发布于 2013-05-07 01:10:06
我想这一次抓到了几个人。实际发生的情况是,只有在显式调用setContentOffset:animated:或scrollRectToVisible:animated:方法时才会调用scrollViewDidEndScrollingAnimation。
正如UIScrollViewDelegate Protocol Reference所说的:
讨论
scroll视图在setContentOffset:animated:和scrollRectToVisible:animated:方法的实现结束时调用此方法,但仅当请求动画时调用。
那该怎么办呢?好吧,我们不要忘记,滚动视图中内容数据的偏移通常不是动画。相反,它是不断更新contentOffset值的结果。因此,您可以使用scrollViewDidScroll:委托方法基于特定的contentOffset触发您的方法。
或者,如果需要在每个滚动手势之后执行此操作-特别是在私有UIScrollViewPanGestureRecognizer之后-则可以在scrollViewDidEndDecelerating:中执行此操作
讨论
当滚动移动停止时,scroll视图调用此方法。UIScrollView的减速属性控制减速。
发布于 2016-11-21 22:45:50
同时实现scrollViewDidEndDecelerating:和scrollViewDidEndDragging:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// User lifted finger while scrolling
[self doPostScrollAction];
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if(!decelerate)
{
// User lifted finger after stopping scrolling
[self doPostScrollAction];
}
}https://stackoverflow.com/questions/14436582
复制相似问题