(iphone)强制scrollViewDidEndDecelerating在以编程方式滚动视图后调用?

eug*_*ene 19 iphone animation uiscrollview

我用滚动动画滚动 scrollRectToVisible:animated:

但是scrollViewDidEndDecelerating没有被召唤.

有没有办法强制调用函数?

Tat*_*asi 53

scrollViewDidEndDecelerating不会被要求scrollRectToVisiblesetContentOffset(即以编程方式滚动).如果你在头文件中注意到这个方法的声明,那么它清楚地提到它是"在我们移动时用手指调用".

现在,为了解决您的问题,scrollViewDidEndScrollingAnimation将调用委托(for setContentOffsetscrollRectToVisible),您可以使用它.

  • @Eugene:是的,非常正常.scrollViewDidScroll:委托响应两者. (3认同)

lxt*_*lxt 5

正如您所发现的那样,scrollViewDidEndDecelerating并不总是被调用(如果您用手指移动滚动视图并使其停止,它也不会被调用).

既然scrollViewDidEndDecelerating是委托方法,你可以强制它像这样调用:

[[scrollView delegate] scrollViewDidEndDecelerating:scrollView];
Run Code Online (Sandbox Code Playgroud)

  • 我在哪里可以打电话给它? (2认同)

Jiř*_*lka 5

我通过从scrollViewDidEndScrollingAnimation调用scrollViewDidEndDecelerating解决了这个问题

-(void) scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    [self scrollViewDidEndDecelerating:scrollView];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //your code
}
Run Code Online (Sandbox Code Playgroud)