diff --git a/RESideMenu/RESideMenu.h b/RESideMenu/RESideMenu.h index 6682ae1b..fdb3cc95 100644 --- a/RESideMenu/RESideMenu.h +++ b/RESideMenu/RESideMenu.h @@ -87,6 +87,7 @@ @protocol RESideMenuDelegate @optional +- (BOOL)sideMenu:(RESideMenu *)sideMenu shouldShowMenuViewController:(UIViewController *)menuViewController; - (void)sideMenu:(RESideMenu *)sideMenu didRecognizePanGesture:(UIPanGestureRecognizer *)recognizer; - (void)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController; - (void)sideMenu:(RESideMenu *)sideMenu didShowMenuViewController:(UIViewController *)menuViewController; diff --git a/RESideMenu/RESideMenu.m b/RESideMenu/RESideMenu.m index b6b8efd9..822aecb7 100644 --- a/RESideMenu/RESideMenu.m +++ b/RESideMenu/RESideMenu.m @@ -251,6 +251,12 @@ - (void)viewDidLoad - (void)presentMenuViewContainerWithMenuViewController:(UIViewController *)menuViewController { + if ([self.delegate conformsToProtocol:@protocol(RESideMenuDelegate)] && [self.delegate respondsToSelector:@selector(sideMenu:shouldShowMenuViewController:)]){ + if(! [self.delegate sideMenu:self shouldShowMenuViewController:self.leftMenuViewController]){ + return; + } + } + self.menuViewContainer.transform = CGAffineTransformIdentity; if (self.scaleBackgroundImageView) { self.backgroundImageView.transform = CGAffineTransformIdentity; @@ -552,6 +558,7 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive - (void)panGestureRecognized:(UIPanGestureRecognizer *)recognizer { + if ([self.delegate conformsToProtocol:@protocol(RESideMenuDelegate)] && [self.delegate respondsToSelector:@selector(sideMenu:didRecognizePanGesture:)]) [self.delegate sideMenu:self didRecognizePanGesture:recognizer]; @@ -560,6 +567,17 @@ - (void)panGestureRecognized:(UIPanGestureRecognizer *)recognizer } CGPoint point = [recognizer translationInView:self.view]; + if ([self.delegate conformsToProtocol:@protocol(RESideMenuDelegate)] && [self.delegate respondsToSelector:@selector(sideMenu:shouldShowMenuViewController:)]){ + if (point.x > 0) { + if(! [self.delegate sideMenu:self shouldShowMenuViewController:self.leftMenuViewController]){ + return; + } + } else { + if(! [self.delegate sideMenu:self shouldShowMenuViewController:self.rightMenuViewController]){ + return; + } + } + } if (recognizer.state == UIGestureRecognizerStateBegan) { [self updateContentViewShadow];