2010-11-03 39 views
4

我有scrollView與pagingScrollView.pagingEnabled = YES;。 彈到下一個頁面後, 滾動視圖反彈減速後一點,這是我的日誌origin.x與評論改變:UIScrollView減速後反彈一點

2010-11-03 12:53:09.187 app[84864:207] scrollview.bound.origin.x: 713.000000 << deccelerating.. 
2010-11-03 12:53:09.199 app[84864:207] scrollview.bound.origin.x: 727.000000 
2010-11-03 12:53:09.212 app[84864:207] scrollview.bound.origin.x: 738.000000 
2010-11-03 12:53:09.230 app[84864:207] scrollview.bound.origin.x: 747.000000 
2010-11-03 12:53:09.248 app[84864:207] scrollview.bound.origin.x: 754.000000 
2010-11-03 12:53:09.262 app[84864:207] scrollview.bound.origin.x: 759.000000 
2010-11-03 12:53:09.278 app[84864:207] scrollview.bound.origin.x: 763.000000 
2010-11-03 12:53:09.295 app[84864:207] scrollview.bound.origin.x: 766.000000 
2010-11-03 12:53:09.312 app[84864:207] scrollview.bound.origin.x: 768.000000 <<at this origin.y, should stop deccelerating 
2010-11-03 12:53:09.328 app[84864:207] scrollview.bound.origin.x: 769.000000 <<bounce ? 
2010-11-03 12:53:09.377 app[84864:207] scrollview.bound.origin.x: 770.000000 <<bounce ? 
2010-11-03 12:53:09.378 app[84864:207] scrollview.bound.origin.x: 769.000000 <<bounce ? 
2010-11-03 12:53:09.395 app[84864:207] scrollview.bound.origin.x: 768.000000 <<stopped 

這怎麼可能發生?幀的寬度是768px。

回答

4

我有同樣的問題。關閉彈跳什麼也不做。

UPD:

我仍然不知道 - 爲什麼會發生這種情況。我檢查了蘋果公司的PhotoScroller樣本,這件事情也發生在那裏。我發現這個解決辦法 - 可能是不太好,但它的工作原理:

  1. 我等待這個事件occure:

    -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView; 
    

,然後只設置正確的位置的內容:

CGFloat pageWidth = pagingScrollView.bounds.size.width; 
NSInteger curPage = currentPage; 

if (firstTapPoint.x > lastTapPoint.x) { 
    //NSLog(@"Going prev page"); 
    curPage = (curPage==0)?0:(currentPage-1); 
}else if(firstTapPoint.x < lastTapPoint.x){ 
    //NSLog(@"Going next page"); 
    curPage = (currentPage==([self imageCount]-1))?currentPage:(currentPage+1); 
}else if(firstTapPoint.x == lastTapPoint.x) { 
    //NSLog(@"Staying on the same page");  
} 

//NSLog(@"Current page is %d and the next page is %d", currentPage, curPage); 

CGPoint finalOffset = CGPointMake(pageWidth * curPage, 0); 
[scrollView setContentOffset:finalOffset animated:YES]; 

然後滾動視圖滾動到我指定的位置,沒有任何'尾彈跳'

+0

謝謝。這幫助我解決了這個問題。只是如何獲得第一個PointPoint螞蟻lastTapPoint。 – negersiu 2010-11-16 11:41:29

+0

這很簡單。你可以實現 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView委託方法,在那裏你可以得到第一個抽頭點:firstTapPoint = CGPointMake(scrollView.contentOffset.x,0);然後你可以實現另一個委託方法 - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;在這裏你可以得到最後一個點擊點:lastTapPoint = CGPointMake(scrollView.contentOffset.x,0); – deMouton 2010-12-07 16:59:17