SWRevealViewController 平移手势识别器问题

Posted

技术标签:

【中文标题】SWRevealViewController 平移手势识别器问题【英文标题】:SWRevealViewController pan gesture recogniser issue 【发布时间】:2014-07-23 09:07:48 【问题描述】:

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

更新:如果我禁用平移手势,我的滑动手势会起作用。

平移手势

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

【问题讨论】:

添加更多代码或细节以帮助解释您使用滑动手势识别器的原因... 我在 SWRevealViewController 中没有问题,请检查您的滑动手势 为什么不使用它:-(IBAction) SwipeMe : (UISwipeGestureRecognizer *) recognizer NSLog(@"swiped"); 只需将其链接到您的视图即可。 @Watsche 如果我禁用平移手势,我的滑动手势会起作用。 @NKB 我已经在我的内容中解释过了。 pan是打开侧边栏,滑动阅读文章。 【参考方案1】:
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

[self.view addGestureRecognizer:left];

注意到区别了吗?将 SwipeGesture 实现为您的 .h 中的属性,或将其放入您的 .xib 并将其链接到您的 .h

【讨论】:

【参考方案2】:

很难同时处理平移和滑动手势识别器。您将处理用于平移手势的 SWRevealViewController 委托以及用于当前视图控制器的滑动手势。

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

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

摘自Apple Documentation:

当通过以下任一方式识别手势时调用此方法 手势识别器或其他手势识别器会阻止另一个 手势识别器从识别其手势。请注意,返回 YES保证允许同时识别;返回 NO, on 另一方面,不能保证防止同时识别 因为其他手势识别器的委托可能会返回 YES。

【讨论】:

嗨,我已经为该方法启用了“是”,但平移识别器仍然超过了滑动移动 它会超车,但它应该检测到两个识别器...您无法优先处理手势...

以上是关于SWRevealViewController 平移手势识别器问题的主要内容,如果未能解决你的问题,请参考以下文章

右侧使用 SWRevealViewController 的两个面板

具有实用视图的 SWRevealViewController

SWRevealViewController 打开方法

带有 SWRevealViewController 的 ios 滑动状态栏

自定义 SWRevealViewController

SWRevealViewController 的 Segue 问题