From c640dcf275e19cd52ed6d3996f70abc83af4fe5b Mon Sep 17 00:00:00 2001 From: Gianluca Tranchedone Date: Tue, 13 May 2014 11:02:21 +0100 Subject: [PATCH 1/2] Fixed issue with -panGestureEnabled. This avoids conflicts with other pan gesture recognizers. --- RESideMenu/RESideMenu.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/RESideMenu/RESideMenu.m b/RESideMenu/RESideMenu.m index 54752bb4..55cf2f70 100644 --- a/RESideMenu/RESideMenu.m +++ b/RESideMenu/RESideMenu.m @@ -39,6 +39,8 @@ @interface RESideMenu () @property (strong, readwrite, nonatomic) UIView *contentViewContainer; @property (assign, readwrite, nonatomic) BOOL didNotifyDelegate; +@property (weak, nonatomic) UIPanGestureRecognizer *panGestureRecognizer; + @end @implementation RESideMenu @@ -216,7 +218,9 @@ - (void)viewDidLoad self.view.multipleTouchEnabled = NO; UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(__panGestureRecognized:)]; panGestureRecognizer.delegate = self; + [self.view addGestureRecognizer:panGestureRecognizer]; + [self setPanGestureRecognizer:panGestureRecognizer]; } [self __updateContentViewShadow]; @@ -474,6 +478,10 @@ - (void)__addContentViewControllerMotionEffects - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + if ([gestureRecognizer isEqual:self.panGestureRecognizer] && !self.panGestureEnabled) { + return NO; + } + IF_IOS7_OR_GREATER( if (self.interactivePopGestureRecognizerEnabled && [self.contentViewController isKindOfClass:[UINavigationController class]]) { UINavigationController *navigationController = (UINavigationController *)self.contentViewController; @@ -483,11 +491,12 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive } ); - if (self.panFromEdge && [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && !self.visible) { + if (self.panFromEdge && [gestureRecognizer isEqual:self.panGestureRecognizer] && !self.visible) { CGPoint point = [touch locationInView:gestureRecognizer.view]; if (point.x < 20.0 || point.x > self.view.frame.size.width - 20.0) { return YES; - } else { + } + else { return NO; } } From 392bd26967561f21dbe048038158b1b24d4d47e1 Mon Sep 17 00:00:00 2001 From: Gianluca Tranchedone Date: Tue, 24 Jun 2014 22:01:38 +0100 Subject: [PATCH 2/2] Adding better support for Interface Builder and Storyboards. --- RESideMenu/RESideMenu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RESideMenu/RESideMenu.h b/RESideMenu/RESideMenu.h index 2167207a..171920fd 100644 --- a/RESideMenu/RESideMenu.h +++ b/RESideMenu/RESideMenu.h @@ -30,9 +30,9 @@ @interface RESideMenu : UIViewController -@property (strong, readwrite, nonatomic) UIViewController *contentViewController; -@property (strong, readwrite, nonatomic) UIViewController *leftMenuViewController; -@property (strong, readwrite, nonatomic) UIViewController *rightMenuViewController; +@property (strong, readwrite, nonatomic) IBOutlet UIViewController *contentViewController; +@property (strong, readwrite, nonatomic) IBOutlet UIViewController *leftMenuViewController; +@property (strong, readwrite, nonatomic) IBOutlet UIViewController *rightMenuViewController; @property (weak, readwrite, nonatomic) id delegate; @property (assign, readwrite, nonatomic) NSTimeInterval animationDuration;