One way to solve your problem is to set a common shared delegate for all your UIGestureRecognizers (probably the UIViewController for this view). This delegate could return NO for gestureRecognizerShouldBegin: (UIGestureRecognizer *) gestureRecognizer if the hard drive gesture recognizer was in the Start or Modified state (this meant that it recognized and processed the pinch). This should prevent any of the draw recognizers from eating touch during gestures.
In the interface file, you will need to save the link to the gesture recognizer when pressed:
@interface MyViewController : UIViewController <UIGestureRecognizerDelegate> {
UIGestureRecognizer *pinchGestureRecognizer;
}
, , :
@implementation MyViewController
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if(pinchGestureRecognizer.state == UIGestureRecognizerStateBegan ||
pinchGestureRecognizer.state == UIGestureRecognizerStateChanged)
{
return NO;
}
else
{
return YES;
}
}