【问题标题】:how to limit UIPanGestureRecognizer with in parent view如何在父视图中限制 UIPanGestureRecognizer
【发布时间】:2013-01-23 07:49:28
【问题描述】:

您好,我在我的项目中使用了UIPanGestureRecognizer。我用下面的代码来处理UIPanGestureRecognizer

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {

      CGPoint translation = [recognizer translationInView:self];
      CGFloat newX = MIN(recognizer.view.frame.origin.x + translation.x, self.frame.size.width - recognizer.view.frame.size.width);
      CGRect newFrame = CGRectMake( newX,recognizer.view.frame.origin.y, recognizer.view.frame.size.width, recognizer.view.frame.size.height);
      recognizer.view.frame = newFrame;
      [recognizer setTranslation:CGPointZero inView:self];
}

我的项目中有两个视图,一个是父视图(红色视图),另一个是子视图(绿色视图)。我的要求是我需要在父视图中平移子视图。我的handlePan 方法工作正常,但唯一的问题是它允许平移超出左侧的限制。它在右侧工作得很好。我需要在代码中更改什么请帮帮我。

【问题讨论】:

    标签: iphone ios uigesturerecognizer uipangesturerecognizer


    【解决方案1】:

    你应该检查UIGestureRecognizerDelegate

    实现 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 并在您不希望手势识别器接收触摸事件时返回 NO。

    这个方法在 touchesBegan:withEvent: 被调用之前被调用 新触摸的手势识别器。

    【讨论】:

    • 感谢您在何​​时调用此方法?
    • 将实现此方法的对象设置为手势识别器的委托。它应该在识别器即将处理触摸事件之前调用。如果返回 NO,则手势识别器将忽略触摸事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多