UIScrollView bounces a little after decelerating
I have scrollView with pagingScrollView.pagingEnabled = YES;
.
After flicking to next page the
scrollView bounces a little after decelerating, here is my log origin.x change with comments:
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开发者_如何学JAVA.x: 769.000000 <<bounce ?
2010-11-03 12:53:09.395 app[84864:207] scrollview.bound.origin.x: 768.000000 <<stopped
How could this happen? The width of frame is 768px.
I have the same issue. Turning off bouncing does nothing.
UPD:
I still do not know - why is this happening. I checked the PhotoScroller sample from Apple, and this thing also happening there. I found this workaround - may be it is not quite good, but it works:
I am waiting for this event to occure:
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
and then just setting the correct position of the content:
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];
Then the scroll view is scrolling right to the position I specified, without any 'tail bouncing'
精彩评论