Try setting canCancelContentTouches from scrollView to NO and delaysContentTouches to YES .
EDIT:
I see that the same question was answered by Drag and Drop using Cocoa on the iPhone (the answer is exactly the same).
If the tap-n user holds signView (approximately 0.3-0.5 seconds), then viewing the touchesBegan: method touchesBegan: triggered, and all events from that moment go into signView until touchesEnded: is called.
If the user quickly wades through signView , then UIScrollView takes over.
Since you already have a UIView with a subclass with the touchesBegan: method implemented touchesBegan: maybe you could somehow tell the user that your application is prepared for signing (equivalent to green light).
You can also use touchesEnded: to turn off this green light.
It might be better to add signImageView as a subView from signView (instead of customScrollView ) and hide it when touchesBegan: run. You would signView to customScrollView in the same place where you are adding signImageView to existing code instead.
With this, you achieve that only one subView effective at that place (for better touch efficiency. And you could achieve this green light effect without hiding signImageView in touchesBegan:/touchesEnded:
If this application behavior (delay 0.3-0.5 s) is unacceptable, you will also need to subclass UIScrollView . There may come to the aid of the Vignesh method of overriding UIScrollView touchesShouldBegin: There you can find that the touch touched in signView and immediately passed it to this view.
source share