当滚动视图完成时,IOS会出现问题

时间:2013-05-29 17:50:22

标签: iphone ios xcode uiscrollview uiscrollviewdelegate

我在这里发现了一篇文章,简要描述了如何判断UIScrollView是否已完成滚动How to know exactly when a UIScrollView's scrolling has stopped?。它使用scrollViewDidEndDragging函数并按照上面提到的UIScrollView文档和post中的说明,使用willDecelerate:(BOOL)减速参数来判断滚动何时停止。但是,我仍然无法使此代码段工作:

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"%d", decelerate);

    if (!decelerate)
    {
        isScrolling = NO;
    }

    isScrolling = YES;
}

我确认该功能正在使用NSLog执行,但即使在我松开​​滚动完成后,减速仍然等于1.为什么会这样?

1 个答案:

答案 0 :(得分:1)

停止拖动后会调用

-scrollViewDidEndDragging:willDecelerate:,但不一定在视图停止滚动时调用。如果您想知道视图何时停止移动,请使用-scrollViewDidEndDecelerating:-scrollViewDidEndScrollingAnimation:

如果您只想知道滚动视图当前是否正在滚动,那么最好询问滚动视图本身,而不是试图跟踪它何时开始以及何时停止。如果滚动视图正在滚动,则可能是因为用户正在主动拖动,或者因为拖动后滚动视图正在减速。您可以轻松地将一个方法(在一个类别中)添加到UIScrollView,以检查这两个条件:

@interface UIScrollView (Scrolling)
- (BOOL)scrolling;
@end

@implementation UIScrollView (Scrolling)
- (BOOL)scrolling
{
    return (self.dragging || self.decelerating);
}
@end