【问题标题】:Horizontal scroll on UIScrollView without pan gesture没有平移手势的 UIScrollView 上的水平滚动
【发布时间】:2013-08-22 15:31:40
【问题描述】:

我怎样才能做到这一点,以便在我使用 UIScrollView 时不调用平移手势识别器选择器。

我希望能够在不调用平移手势选择器的情况下在滚动视图中滚动。

这是我的平移检测功能:

- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
{

    CGPoint translation = [panRecognizer translationInView:self.view];
    CGPoint imageViewPosition = self.draggableImage.center;
    imageViewPosition.x += translation.x;
    imageViewPosition.y += translation.y;

    self.draggableImage.center = imageViewPosition;
    [panRecognizer setTranslation:CGPointZero inView:self.view];
}

我不希望在页面底部使用 UIScrollView 时调用它。

【问题讨论】:

  • 所以您想在滚动视图中添加另一个手势并有时禁用滚动视图平移手势但让您的手势保持活动状态?
  • 他想要“我希望能够在不调用平移手势选择器的情况下在滚动视图中滚动。”
  • 考虑到平移手势是滚动视图滚动的原因,他可能不得不编写自己的滚动代码

标签: ios uiscrollview uipangesturerecognizer


【解决方案1】:

您可以从滚动视图中移除手势识别器

NSArray* gestureRecognizers = [scrollView gestureRecognizers];
for (UIGestureReconizer* recog in gestureRecognizers) {
    if ( [recog isKindOfClass:[UIPanGestureRecognizer Class]] )
        [recog removeTarget:scrollView.delegate action:@selector(scrollViewDidScroll:)];
}

我不明白为什么需要这样做,但就是这样。

【讨论】:

    【解决方案2】:

    不完全确定您要在这里完成什么。我没有玩过这个,但我最初的想法是,如果你禁用平移识别器,你的滚动视图就不会滚动。您的滚动视图会根据平移识别器告诉它的内容来计算滚动的位置和方式。

    如果您有其他设置来处理滚动,那么无论如何:

    UIScrollView *scrollView;
    [[scrollView panGestureRecognizer] setEnabled:NO];
    

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2016-09-07
      • 1970-01-01
      • 2012-11-24
      • 2013-11-27
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      相关资源
      最近更新 更多