Iphone UIScrollView委托方法冲突

Iphone UIScrollView委托方法冲突,iphone,objective-c,ios,uiscrollview,uiscrollviewdelegate,Iphone,Objective C,Ios,Uiscrollview,Uiscrollviewdelegate,我使用以下两个UIScrollView委托方法调用UIViewController中的另一个方法: -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { // do something } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ // do something

我使用以下两个UIScrollView委托方法调用UIViewController中的另一个方法:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    // do something
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    // do something
}
我尝试了各种不同的方法调用//do something,但要么都没有被调用,要么两个委托方法都被调用,在某些情况下调用//do something两次。例如:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if(![scrollView isDecelerating] && ![scrollView isDragging]){
        //do something
    }
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    if(!decelerate){
        //do something
    }
}
因此,对于上述情况,如果我滚动并让它慢到停止,它将调用ScrollViewDiEndDecelling:,但如果我滚动并点击停止它,它将调用ScrollViewDiEndDraging:和ScrollViewDiEndDecelling:


我想让它打电话给一个或另一个。。。我可以用ScrollViewDiEndDecelling:和scrollView对象来停止这个双重方法调用吗?

scroll view委托完成它的工作。你不能阻止它发生。但只要有一个简单的逻辑,你就能实现你想要做的事情

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    dragged = YES;
    // do something
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    if (!dragged) {

         // do something
    }

    dragged = NO;
}

滚动视图代理完成其工作。你不能阻止它发生。但只要有一个简单的逻辑,你就能实现你想要做的事情

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    dragged = YES;
    // do something
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    if (!dragged) {

         // do something
    }

    dragged = NO;
}

这似乎奏效了。接近


这似乎奏效了。接近

//很简单

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    if(!decelerate){
         // Do something 
    }

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
       // Do something 
}
//很简单

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    if(!decelerate){
         // Do something 
    }

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
       // Do something 
}

你能更清楚一点你到底想要什么吗?如果你没有什么复杂的事情要做,你就不能试着用
scrollViewDidScroll
方法吗?scrollViewDidScroll太重了。我已经在下面发布了解决方案。我基本上想要一个方法,当滚动停止时,或者通过自然减速,或者当用户停止拖动操作时触发。你能更清楚一点你到底想要什么吗?如果你没有任何复杂的事情要做,你就不能试试
scrollViewDidScroll
方法吗?scrollViewDidScroll太重了。我已经在下面发布了解决方案。我基本上希望在滚动停止时通过自然减速或用户停止拖动操作触发一个方法。注意:ScrollViewDiEndDragging之后可能不会调用ScrollViewDiEndDragging注意:ScrollViewDiEndDragging之后可能不会调用ScrollViewDiEndDragging