2

我有一个可以使用 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];
}

谢谢你的帮助。

4

3 回答 3

7

所以只需检查新的 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;
}
于 2012-02-07T05:13:57.120 回答
2

它对我来说很好。

  CGPoint currentTouchPoint = [gesture translationInView:self.bottomView];

    if (fabsf(currentTouchPoint.x) > fabsf(currentTouchPoint.y))    {
        // avoid horizontal movement of pan geuture.
        return;
    }

谢谢,

纳文山

于 2012-11-22T08:34:05.547 回答
0

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

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
于 2012-02-07T04:25:32.103 回答