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样本,这件事情也发生在那里。我发现这个解决办法 - 可能是不太好,但它的工作原理:
-
我等待这个事件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];
然后滚动视图滚动到我指定的位置,没有任何'尾弹跳'
谢谢。这帮助我解决了这个问题。只是如何获得第一个PointPoint蚂蚁lastTapPoint。 – negersiu 2010-11-16 11:41:29
这很简单。你可以实现 - (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