Is there a way to deactivate the decelerating of a UIScrollView?
I want to allow the user to scroll the canvas, but I don't want that the canvas continues scrolling after the user lifted the finger.
Is there a way to deactivate the decelerating of a UIScrollView?
I want to allow the user to scroll the canvas, but I don't want that the canvas continues scrolling after the user lifted the finger.
This can be done by utilizing the
UIScrollView
delegate methodscrollViewWillBeginDecelerating
to automatically set the content offset to the current screen position.To implement:
UIScrollView
object if you have not already done so.In your delegate's
.m
implementation file, add the following lines of code:Voila! No more auto-scroll.
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:Assigning the current offset to
targetContentOffset
stops theUIScrollView
from auto-scrolling.Just set the decelerationRate property to 0
It will disable the auto scrolling property. But keep in mind the user interaction will become bad if scrollview contentsize is big.
You can just turn up the deceleration rate very high. With an infinite rate, it would stop immediately. Try setting the rate to these constants:
and
If fast still isn't fast enough for you, UIScrollViewDecelerationRateFast is just typedef'ed as a float, so you can just multiply it by a factor of 10 or so to speed it up even more.