SWRevealViewController平移手势识别器问题

时间:2014-07-23 09:07:49

标签: ios iphone uipangesturerecognizer uiswipegesturerecognizer

我正在使用John-Lluch的SWRevealViewController。我需要使用平移手势来查看侧边栏,我使用滑动来查看我的上一篇和下一篇文章。但是,只能检测平移手势。

更新:如果我禁用手势,我的滑动手势会有效。

Pan Gesture

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

滑动手势

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];

2 个答案:

答案 0 :(得分:1)

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

[self.view addGestureRecognizer:left];

注意区别?将.ShipeGesture作为.h中的属性实现,或者将其放在.xib中并将其链接到.h

答案 1 :(得分:1)

同时处理平移和滑动手势识别器很困难。您将为平移手势处理SWRevealViewController委托,并为当前viewcontroller轻扫手势。

苹果建议区分手势,你可以使用以下方法

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

摘自Apple Documentation:

  

当通过任一方式识别手势时调用此方法   gestureRecognizer或otherGestureRecognizer会阻止另一个   手势识别器识别其手势。请注意返回   是保证允许同时识别;返回NO,开启   另一方面,不保证防止同时识别   因为其他手势识别器的代表可能会返回YES。