shoujo_sm
shoujo_sm

Reputation: 3203

SWRevealViewController pan gesture recogniser issue

I am using SWRevealViewController from John-Lluch. I need to use pan gesture to view the sidebars and I am using swipe to view my previous and next articles. However, the pan gesture can only be detected.

UPDATED: My swipe gesture worked if I disable my pan gesture.

Pan Gesture

 [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

Swipe gesture

UISwipeGestureRecognizer *left = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)] autorelease];
left.direction = UISwipeGestureRecognizerDirectionLeft;

UISwipeGestureRecognizer *right = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)] autorelease];
right.direction = UISwipeGestureRecognizerDirectionRight;

[self.view addGestureRecognizer:left];
[self.view addGestureRecognizer:right];

Upvotes: 2

Views: 1676

Answers (2)

NKB
NKB

Reputation: 649

It is difficult to handle both pan and swipe gesture recognizer simultaneously. You will have handle the SWRevealViewController delegates for pan gesture and also swipe gesture for the current viewcontroller.

As apple suggests to differentiate the gesture you could use the following method

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

Excerpt from the Apple Documentation:

This method is called when recognition of a gesture by either gestureRecognizer or otherGestureRecognizer would block the other gesture recognizer from recognizing its gesture. Note that returning YES is guaranteed to allow simultaneous recognition; returning NO, on the other hand, is not guaranteed to prevent simultaneous recognition because the other gesture recognizer's delegate may return YES.

Upvotes: 1

user3078856
user3078856

Reputation:

[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

[self.view addGestureRecognizer:left];

Notice the difference? Implement the SwipeGesture as a property in your .h or make it in your .xib and link it to your .h

Upvotes: 1

Related Questions