我使用scrollRectToVisible:animated:
但是scrollViewDidEndDecelerating
没有被调用。
有没有办法强制调用函数?
答案 0 :(得分:50)
scrollViewDidEndDecelerating
或scrollRectToVisible
调用{p> setContentOffset
(即以编程方式滚动)。如果你在头文件中注意到这个方法的声明,它就会明确地提到它是“在我们移动的时候用手指调用”。
现在,为了解决您的问题,我们会调用scrollViewDidEndScrollingAnimation
代表(适用于setContentOffset
和scrollRectToVisible
),您可以使用。
答案 1 :(得分:5)
正如您所发现的那样,并不总是调用scrollViewDidEndDecelerating
(如果您用手指移动滚动视图并使其停止,则也不会调用它。)
由于scrollViewDidEndDecelerating
是委托方法,您可以强制它像这样调用:
[[scrollView delegate] scrollViewDidEndDecelerating:scrollView];
答案 2 :(得分:4)
我通过从 scrollViewDidEndScrollingAnimation
调用 scrollViewDidEndDecelerating 解决了这个问题-(void) scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
[self scrollViewDidEndDecelerating:scrollView];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//your code
}
答案 3 :(得分:1)
在我的案例中添加以下代码修复了一个问题。
\s*
答案 4 :(得分:0)
使用scrollView.delegate
。
对于非常平滑的视图动画,应添加一个委托函数。
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate, decelerate: Bool) {
if decelerate == false {
scrollViewDidEndDecelerating(scrollView)
}
}