Hello. I ran into this issue earlier today and I think I have a pretty good grasp of what's going wrong.
Situation:
- A typical ScrollView setup, except both the ScrollView and its single child are left-aligned.
- The Reset Position on the UIScrollView is set to 0, 0.
Bug: Calling ResetPosition() can place the contents slightly outside of the ScrollView such that the floating-point math in the shouldMove property will return true, even if the contents are smaller than the panel.
When combined with the "Cancel Drag If Fits" option, this can result in a situation where you can drag the contents but if you release it somewhere where it is fully contained within the panel then it becomes frozen in that position. I noticed that if I released the contents on the outside of the panel on the same side it was initially on, then it will be animated to its original position (as usual) and will not become frozen yet. This indicates that the animation itself does not return the contents to be fully-inside the panel, at least not within a safe range to negate floating-point errors.
My current workaround is to put the Reset Position at 0.001 to ensure that "shouldMove" evaluates correctly.
I think the simplest fix for this would be to update "shouldMove" to look at the "Cancel Drag If Fits" setting and do a safety check in that case.
Cheers