diff --git a/MMDrawerController/MMDrawerController.h b/MMDrawerController/MMDrawerController.h index 92833a62..6e82fbc3 100644 --- a/MMDrawerController/MMDrawerController.h +++ b/MMDrawerController/MMDrawerController.h @@ -435,7 +435,7 @@ typedef void (^MMDrawerControllerDrawerVisualStateBlock)(MMDrawerController * dr @param gestureCompletionBlock A block object to be called that allows the implementer be notified when a gesture action has been completed. */ --(void)setGestureCompletionBlock:(void(^)(MMDrawerController * drawerController, UIGestureRecognizer * gesture))gestureCompletionBlock; +-(void)setGestureCompletionBlock:(void(^)(MMDrawerController * drawerController, UIGestureRecognizer * gesture)) gestureCompletionBlock; ///--------------------------------------- /// @name Custom Gesture Handler @@ -452,4 +452,6 @@ typedef void (^MMDrawerControllerDrawerVisualStateBlock)(MMDrawerController * dr */ -(void)setGestureShouldRecognizeTouchBlock:(BOOL(^)(MMDrawerController * drawerController, UIGestureRecognizer * gesture, UITouch * touch))gestureShouldRecognizeTouchBlock; +-(void)setGestureShouldSimultaneouslyRecognizeBlock:(BOOL(^)(MMDrawerController * drawerController, UIGestureRecognizer * gesture, UIGestureRecognizer * otherGesture))gestureShouldSimultaneouslyRecognizeBlock; + @end diff --git a/MMDrawerController/MMDrawerController.m b/MMDrawerController/MMDrawerController.m index 4aec238b..c2975890 100644 --- a/MMDrawerController/MMDrawerController.m +++ b/MMDrawerController/MMDrawerController.m @@ -50,6 +50,9 @@ CGFloat const MMDrawerOvershootPercentage = 0.1f; typedef BOOL (^MMDrawerGestureShouldRecognizeTouchBlock)(MMDrawerController * drawerController, UIGestureRecognizer * gesture, UITouch * touch); + +typedef BOOL (^MMDrawerShouldSimultaneouslyRecognizeGestureBlock)(MMDrawerController * drawerController, UIGestureRecognizer * gesture, UIGestureRecognizer * otherGesture); + typedef void (^MMDrawerGestureCompletionBlock)(MMDrawerController * drawerController, UIGestureRecognizer * gesture); static CAKeyframeAnimation * bounceKeyFrameAnimationForDistanceOnView(CGFloat distance, UIView * view) { @@ -135,6 +138,7 @@ @interface MMDrawerController () { @property (nonatomic, assign) CGRect startingPanRect; @property (nonatomic, copy) MMDrawerControllerDrawerVisualStateBlock drawerVisualState; @property (nonatomic, copy) MMDrawerGestureShouldRecognizeTouchBlock gestureShouldRecognizeTouch; +@property (nonatomic, copy) MMDrawerShouldSimultaneouslyRecognizeGestureBlock shouldSimultaneouslyRecognizeGesture; @property (nonatomic, copy) MMDrawerGestureCompletionBlock gestureCompletion; @property (nonatomic, assign, getter = isAnimatingDrawer) BOOL animatingDrawer; @@ -685,6 +689,11 @@ -(void)setGestureShouldRecognizeTouchBlock:(BOOL (^)(MMDrawerController *, UIGes [self setGestureShouldRecognizeTouch:gestureShouldRecognizeTouchBlock]; } + +-(void)setGestureShouldSimultaneouslyRecognizeBlock:(BOOL(^)(MMDrawerController * drawerController, UIGestureRecognizer * gesture, UIGestureRecognizer * otherGesture))gestureShouldSimultaneouslyRecognizeBlock { + [self setShouldSimultaneouslyRecognizeGesture:gestureShouldSimultaneouslyRecognizeBlock]; +} + #pragma mark - Setting the Gesture Completion Block -(void)setGestureCompletionBlock:(void (^)(MMDrawerController *, UIGestureRecognizer *))gestureCompletionBlock{ [self setGestureCompletion:gestureCompletionBlock]; @@ -1374,6 +1383,14 @@ -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveT } } +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if (self.shouldSimultaneouslyRecognizeGesture) { + return self.shouldSimultaneouslyRecognizeGesture(self, gestureRecognizer, otherGestureRecognizer); + } + return NO; +} + + #pragma mark Gesture Recogizner Delegate Helpers -(MMCloseDrawerGestureMode)possibleCloseGestureModesForGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer withTouch:(UITouch*)touch{ CGPoint point = [touch locationInView:self.childControllerContainerView];