UIScrollView减速后反弹一点

问题描述:

我有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。

我有同样的问题。关闭弹跳什么也不做。

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