I only just found this question, which is pretty much the same I asked: How to know exactly when a UIScrollView's scrolling has stopped?
Though didEndDecelerating works when scrolling, panning with stationary release does not register.
I eventually found a solution. didEndDragging has a parameter WillDecelerate, which is false in the stationary release situation.
By checking for !decelerate in DidEndDragging, combined with didEndDecelerating, you get both situations that are the end of scrolling.