Detect scrolling in Subclass of UIScrollView

I ran into the same problem creating a subclass of the UIScrollView but solved it this way. As mentioned above, you can set yourself (subclass instance) as the delegate however this is what I did.

In the sub class I overrode the following methods

//Override this to detect when the user is scrolling, this is also triggered during view
//layout.  Here you can check your deceleration rate and determine when the scrolling has
//grinded to a halt.
-(void)setContentOffset:(CGPoint)contentOffset

//Override this to detect when the view has been resized (just a handy override)
-(void)setFrame:(CGRect)frame;

As far as the other UIScrollViewDelegate methods, the View Controller should be responsible for handling those in my opinion.


I think you can try setting self.delegate = self; to receive events.


If anyone is looking for a Swift answer, it's as simple as this:

override var contentOffset: CGPoint {
    didSet {
        if contentOffset != oldValue {
            //same as scrollViewDidScroll
        }
    }
}