Sorry for a little necro'ing, but just in case other folks hit this issue, I'm finding that even with your patch above I don't get the desired behavior in at least one case. I have a draggable panel I am adding via code as a sibling GameObject of the GameObject holding my scroll view. When I add a new draggable area via code (eg, something like this:)
dragArea
= new GameObject
("Drag Area"); dragArea.AddComponent<UIDragScrollView>().scrollView = scrollView;
OnEnable is called as soon as I call AddComponent - before the assignment of scrollView. Thus, FindScrollView enters the if (scrollView == null) and sets mAutoFind to true. I worked around that issue by setting the GameObject to inactive before adding the component:
dragArea
= new GameObject
("Drag Area"); dragArea.SetActive(false);
dragArea.AddComponent<UIDragScrollView>().scrollView = scrollView;
...
dragArea.SetActive(true);
Hope that helps someone.