【问题标题】:Restricting UIPanGestureRecognizer movement限制 UIPanGestureRecognizer 移动
【发布时间】:2012-02-07 01:44:34
【问题描述】:

我有一个可以使用 UIPanGestureRecognizer 拖动的 UIView 对象,但我只希望它能够向上移动屏幕的 3/4。我不希望它被剪裁,而是要达到某个点并且不能被拖得更远。到目前为止,我所拥有的只允许它在 Y 轴上移动(这是所需的)。

- (IBAction)panGesture:(UIPanGestureRecognizer *)recognizer
{
  CGPoint translation = [recognizer translationInView:self.view];
  recognizer.view.center = CGPointMake(recognizer.view.center.x, 
                                       recognizer.view.center.y + translation.y);
  [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

感谢您的帮助。

【问题讨论】:

    标签: ios uiview uipangesturerecognizer


    【解决方案1】:

    所以只需检查新的 Y 坐标是否太小。如果视图太小,请不要更改视图:

    - (IBAction)panGesture:(UIPanGestureRecognizer *)recognizer
    {
      CGPoint translation = [recognizer translationInView:self.view];
      [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
    
      CGPoint center = recognizer.view.center;
      center.y += translation.y;
      if (center.y < self.yMin)
        return;
      recognizer.view.center = center;
    }
    

    【讨论】:

    • 成功了,谢谢。我将 yMin 设为 int,而它需要 self-&gt;yMin。这是处理事情的最佳方式吗?
    • 听起来不错。您可以拥有类型为int 的属性。你只是不声明它retain/assign/strong/weak。但是,如果您不需要将其作为属性公开,则可以只使用 ivar。您可以通过说yMin 访问 ivar。你不必说self-&gt;yMin,除非你有一个也叫yMin的局部变量你不想想要访问。
    【解决方案2】:

    它对我来说很好用。

      CGPoint currentTouchPoint = [gesture translationInView:self.bottomView];
    
        if (fabsf(currentTouchPoint.x) > fabsf(currentTouchPoint.y))    {
            // avoid horizontal movement of pan geuture.
            return;
        }
    

    谢谢,

    纳文山

    【讨论】:

      【解决方案3】:

      实现以下手势委托并检查其中的条件。从此委托返回 YES 或 NO 将使手势处于活动状态和非活动状态。

      - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多