Deactivate UIScrollView decelerating
For iOS 5.0 or later, there is a better method than calling setContentOffset:animated:
.
Implement delegate method scrollViewWillEndDragging:withVelocity:targetContentOffset:
in your .m
file:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
targetContentOffset.pointee = scrollView.contentOffset;
}
Assigning the current offset to targetContentOffset
stops the UIScrollView
from auto-scrolling.
This can be done by utilizing the UIScrollView
delegate method scrollViewWillBeginDecelerating
to automatically set the content offset to the current screen position.
To implement:
- Assign a delegate to your
UIScrollView
object if you have not already done so. In your delegate's
.m
implementation file, add the following lines of code:-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ [scrollView setContentOffset:scrollView.contentOffset animated:YES]; }
Voila! No more auto-scroll.