找到UIPanGestureRecognizer的位置

时间:2014-04-06 13:32:39

标签: ios objective-c ios7

我已将UIPanGestureRecognizer添加到视图控制器中。我希望能够向上滑动以进入下一个视图控制器(有点像iOS锁屏上的摄像头)。

我的问题是我不知道如何找到被淘汰的视图的位置。

  • 如果用户通过一定长度然后放手我想去下一个视图控制器。
  • 如果用户没有达到一定长度并放手,我希望视图在平移之前返回其默认状态。

我知道locationInView,但我无法在我的方案中完成工作。

我也知道我需要使用UIGestureRecognizerStateChangedUIGestureRecognizerStateEnded来处理所有这些事情,我只是不知道如何找到位置并设置位置。感谢。

这是我的代码:

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

    if (recognizer.state == UIGestureRecognizerStateChanged) {

        CGPoint t = [recognizer translationInView:self.view];

        if (t.y < 0) {
            t = CGPointMake(0, t.y);
        }
        else {
            t = CGPointMake(0, t.y);
        }

        //look at this

        recognizer.view.center = CGPointMake(recognizer.view.center.x + t.x, recognizer.view.center.y + t.y);
        [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];

    }
    else if (recognizer.state == UIGestureRecognizerStateEnded) {

        //if the view was dragged to past 100 px - go to next view controller, if not go back t the bottom of the screen
    }
}

2 个答案:

答案 0 :(得分:0)

每次翻译更改时,重置translationInView会让您的生活更加艰难。通过在手势开始时存储默认/开始位置并且每次从该默认/开始位置和手势的组合translationInView设置新位置,可以更好地服务。

通过这种方式,您可以避免由于计算错误而导致任何漂移,并且您还可以使用默认/开始位置进行比较,如果需要,可以在手势结束时重置。

答案 1 :(得分:0)

在手势识别器上使用- (CGPoint)locationInView:(UIView*)view方法。