【问题标题】:UIScrollView overrides my subview's pan gesture recognizersUIScrollView 覆盖了我的子视图的平移手势识别器
【发布时间】:2013-09-28 05:33:39
【问题描述】:

如果我有一个带有子视图的滚动视图并且子视图有一个平移手势识别器,那么滚动视图的平移手势覆盖就是子视图的平移。我想我想要的是相反的,所以我拖动一个子视图它将在滚动视图中平移,但是如果我触摸另一个区域,滚动视图将正常平移。有没有简单的方法来设置它?

【问题讨论】:

    标签: ios cocoa-touch uiscrollview uigesturerecognizer


    【解决方案1】:

    如果您不想滚动触摸子视图,请将UIScrollViewcanCancelContentTouches 属性设置为false

    Original answer

    【讨论】:

      【解决方案2】:

      覆盖下面这两个委托,

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

      }

      这将允许您识别这两种手势,默认返回是NO,所以我们需要覆盖它并返回YES

      - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
      if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
          if ([otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
              return NO;
          }else{
              return YES;
          }
      }
      return YES;
      

      }

      在这个委托中你可以做任何你想做的事情,因为它的名字 gestureRecognizer 将被 otherGestureRecognizer 要求失败,你需要做的就是判断这两个手势是什么,返回YES或NO。

      【讨论】:

        【解决方案3】:

        这对我有用:

        UIPanGestureRecognizer *subviewPanRecognizer = [[UIPanGestureRecognizer alloc]
            initWithTarget:self action:@selector(panSubview:)];
        [subview addGestureRecognizer:subviewPanRecognizer];
        
        // play nice with subview's pan gesture
        [scrollView.panGestureRecognizer 
            requireGestureRecognizerToFail:subviewPanRecognizer];
        

        【讨论】:

        • 这似乎是默认行为(这就是我在带有 UIImageView 子视图的 UIScrollView 中观察到的)。有人可以确认/确认吗?
        • 效果很好,尤其是在子视图上应用委托并实现gestureRecognizerShouldBegin:时。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-21
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-21
        相关资源
        最近更新 更多