【问题标题】:Horizontal UISwipeGestureRecognizer in subview of UIScrollView ? (UIScrollView only needs to recognize vertical scrolling)UIScrollView 子视图中的水平 UISwipeGestureRecognizer ? (UIScrollView 只需要识别垂直滚动)
【发布时间】:2012-12-12 19:51:03
【问题描述】:

我有一个 UIScrollView,我在其中添加了一个子视图。滚动视图可以很好地垂直滚动,这就是它应该做的。我现在想在 UISwipeGestureRecognizer 的帮助下识别子视图中的左/右滑动。我知道这是可能的,但我还没有找到解决方案,并且多次尝试均未成功。

【问题讨论】:

    标签: objective-c ios uiscrollview uigesturerecognizer


    【解决方案1】:

    试试这些:

    • 设置你的UIGestureRecognizer的代表和

    • 实现shouldRecognizeSimultaneouslyWithGestureRecognizer:

      -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
      return YES;
      }
      
    • 实现shouldReceiveTouch:

      - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
      {
       return YES;
      }
      

    希望对你有帮助

    【讨论】:

    • 不,我之前尝试过,但没有成功:(。我认为 UIScrollView 只会吞下检测到的每一个拖动。
    • 你确定你实现了 shouldRecognizeSimultaneouslyWithGestureRecognizer 而不仅仅是 shouldReceiveTouch?
    • 您是否检查过您的委托方法是否被调用?
    • 是的,我确实实现了-shouldRecognizeSimultaneouslyWithGestureRecognizer::,但奇怪的是他们没有被调用...
    • 您是否正确设置了代理?您是否将gestureRecognizer 添加到UIScrollView?
    【解决方案2】:

    我能够使用新的 iOS 7 UIGestureRecognizerDelegate 方法完成一些相关的事情(直接在滚动视图上添加两指滑动手势识别器):

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
            shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {
        return otherGestureRecognizer == scrollView.panGestureRecognizer;
    }
    

    但是,结果并不完美 - 等待滑动手势识别器首先失败的延迟会导致滚动视图的平移手势识别器延迟,因此当您开始滚动时,正常滚动会明显延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多