From 7a8265daa6f2c963c3379f5e3634744f2a20160e Mon Sep 17 00:00:00 2001 From: Kevin Harwood Date: Tue, 28 Jan 2014 16:43:24 -0600 Subject: [PATCH 1/2] Added in a isAnimating guard when setting the full close animation Potential fix for #30 --- MMDrawerController/MMDrawerController.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MMDrawerController/MMDrawerController.m b/MMDrawerController/MMDrawerController.m index b8a329c0..95511281 100644 --- a/MMDrawerController/MMDrawerController.m +++ b/MMDrawerController/MMDrawerController.m @@ -461,6 +461,8 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF CGRect newCenterRect = self.centerContainerView.frame; + [self setAnimatingDrawer:animated]; + UIViewController * oldCenterViewController = self.centerViewController; [oldCenterViewController beginAppearanceTransition:NO animated:animated]; newCenterRect.origin.x = targetClosePoint; @@ -498,7 +500,7 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF [sideDrawerViewController.view setFrame:sideDrawerViewController.mm_visibleDrawerFrame]; [self setOpenSide:MMDrawerSideNone]; - + [self setAnimatingDrawer:NO]; if(completion){ completion(finished); } @@ -914,7 +916,8 @@ -(UIColor*)statusBarViewBackgroundColor{ #pragma mark - Gesture Handlers -(void)tapGestureCallback:(UITapGestureRecognizer *)tapGesture{ - if(self.openSide != MMDrawerSideNone){ + if(self.openSide != MMDrawerSideNone && + self.isAnimatingDrawer == NO){ [self closeDrawerAnimated:YES completion:^(BOOL finished) { if(self.gestureCompletion){ self.gestureCompletion(self, tapGesture); From b590336b42d88ec718a131cdd3426a30969be448 Mon Sep 17 00:00:00 2001 From: Kevin Harwood Date: Tue, 28 Jan 2014 17:31:46 -0600 Subject: [PATCH 2/2] Fixed issue with pan gestures as well --- MMDrawerController/MMDrawerController.m | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/MMDrawerController/MMDrawerController.m b/MMDrawerController/MMDrawerController.m index 95511281..0d091fd7 100644 --- a/MMDrawerController/MMDrawerController.m +++ b/MMDrawerController/MMDrawerController.m @@ -928,8 +928,15 @@ -(void)tapGestureCallback:(UITapGestureRecognizer *)tapGesture{ -(void)panGestureCallback:(UIPanGestureRecognizer *)panGesture{ switch (panGesture.state) { - case UIGestureRecognizerStateBegan: - self.startingPanRect = self.centerContainerView.frame; + case UIGestureRecognizerStateBegan:{ + if(self.animatingDrawer){ + [panGesture setEnabled:NO]; + break; + } + else { + self.startingPanRect = self.centerContainerView.frame; + } + } case UIGestureRecognizerStateChanged:{ CGRect newFrame = self.startingPanRect; CGPoint translatedPoint = [panGesture translationInView:self.centerContainerView]; @@ -969,7 +976,6 @@ -(void)panGestureCallback:(UIPanGestureRecognizer *)panGesture{ [self.centerContainerView setCenter:CGPointMake(CGRectGetMidX(newFrame), CGRectGetMidY(newFrame))]; break; } - case UIGestureRecognizerStateCancelled: case UIGestureRecognizerStateEnded:{ self.startingPanRect = CGRectNull; CGPoint velocity = [panGesture velocityInView:self.childControllerContainerView]; @@ -980,6 +986,10 @@ -(void)panGestureCallback:(UIPanGestureRecognizer *)panGesture{ }]; break; } + case UIGestureRecognizerStateCancelled:{ + [panGesture setEnabled:YES]; + break; + } default: break; }