2011-08-02 45 views
0

我使用以下兩種UIScrollView的委託方法調用在我的UIViewController另一種方法:UIScrollView的委託方法發生衝突

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

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 
    // do something 
} 

我已經打過電話的各種不同的方式//做一些事情,但要麼都結束了沒有被調用,或兩個委託方法被調用,調用//在某些情況下做兩次事情。例如:

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

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 
    if(!decelerate){ 
     //do something 
    } 
} 

因此,與如果我滾動,讓它緩慢停止以上,它調用scrollViewDidEndDecelerating :,但如果我滾動,並用自來水停止它同時呼籲scrollViewDidEndDragging:和scrollViewDidEndDecelerating:

我想要它調用一個或另一個...有什麼我可以做的scrollViewDidEndDecelerating:和scrollView對象來停止這種雙重方法調用?

+0

你可以對你想要什麼更加清楚一點? –

+0

如果你沒有任何複雜的事情,你不能只是嘗試'scrollViewDidScroll'方法嗎? – visakh7

+0

scrollViewDidScroll太重了。我已經發布了下面的解決方案。我基本上需要一種方法來在滾動停止時自然減速或者當用戶停止拖動操作時觸發。 – mootymoots

回答

2

滾動視圖委託做它的工作。你無法阻止它發生。但是用一個簡單的邏輯你就可以實現你想要做的事情。

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

    dragged = YES; 
    // do something 
} 

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

    if (!dragged) { 

     // do something 
    } 

    dragged = NO; 
} 
+0

這很接近......它激發了我對下面的工作解決方案的... – mootymoots

+0

請注意:scrollViewDidEndDragging之後可能不會調用scrollViewDidEndDecelerating –

0

這似乎工作。關閉EmptyStack's answer

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

    if (!dragged) { 
     //do something 
    } 

    dragged = NO; 
} 

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

    if(!decelerate){ 
     dragged = YES; 
     //do something 
    } else { 
     dragged = NO; 
    } 
} 
2

//很簡單

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

    if(!decelerate){ 
     // Do something 
    } 

} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
     // Do something 
} 
相關問題