Ios Objective-c应与手势识别器同时识别禁用其他手势识别器

Ios Objective-c应与手势识别器同时识别禁用其他手势识别器,ios,objective-c,uitableview,uigesturerecognizer,Ios,Objective C,Uitableview,Uigesturerecognizer,我有viewdeck控制器,我可以通过向右滑动打开左侧栏菜单。 对于我的中心视图控制器,我还有uitableview 问题是我可以向右滑动打开菜单,同时我也可以滚动我的tableview。我需要一次只允许一个手势 所以,我在这里查一下 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureReco

我有viewdeck控制器,我可以通过向右滑动打开左侧栏菜单。 对于我的中心视图控制器,我还有uitableview

问题是我可以向右滑动打开菜单,同时我也可以滚动我的tableview。我需要一次只允许一个手势

所以,我在这里查一下

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
我是这样发现的。我需要禁用UIPangEstureRecognitor或UIScrollViewPangEstureRecognitor,一次只允许一个手势。我可以知道怎么做吗

//(lldb) po gestureRecognizer
//<UIPanGestureRecognizer: 0x79eef4d0; state = Possible; view = <UIView 0x79ee36e0>; target= <(action=panned:, target=<IIViewDeckController 0x79edb1d0>)>>

//(lldb) po otherGestureRecognizer
//<UIScrollViewPanGestureRecognizer: 0x79ff32f0; state = Began; delaysTouchesEnded = NO; view = <UITableView 0x7c301e00>; target= <(action=handlePan:, target=<UITableView 0x7c301e00>)>>
/(lldb)邮政编码识别器
//
//(lldb)po其他手势识别器
//

您可以尝试将另一个手势识别器上的
enabled
属性设置为
NO
。我目前还没有启动我的开发环境,但我记得以前也做过类似的事情。像这样:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizershouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    otherGestureRecognizer.enabled = NO;
    return YES;
 }

你也可以试试这个,它解决了我的问题

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
      if ([otherGestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) { // replace `UIScreenEdgePanGestureRecognizer` with any class you don't need.
            return NO; 
      } 
      return YES; 
 }

祝你好运

你好,亲爱的。你能告诉我们,你在哪个控制器上有在Tableview或MainView上添加手势的方法吗。一个手势来自tableview,另一个手势来自viewdeck控制器。我理解您的问题,不需要在tableview上添加手势,您必须在mainView上添加滑动手势。是的,我在tableview上没有得到手势。它从uitableview中自动为uiscrollview设置了gestuer。这是一个很好的主意,可以禁用您不是其代理的手势。然而,当我尝试这个动作时,它直到我第二次调用这个手势时才生效。第一次,手势仍在发射。这是错误的吗?根据Apple docs的说法,UIGestureRecognitizer没有“enabled”属性,在答案的代码中,函数应该返回bool,但没有。每当识别器尝试从.转换时,都会重复调用此委托方法。这是非常存在的enabled属性。