我已将UIPanGestureRecognizer
添加到视图控制器中。我希望能够向上滑动以进入下一个视图控制器(有点像iOS锁屏上的摄像头)。
我的问题是我不知道如何找到被淘汰的视图的位置。
我知道locationInView
,但我无法在我的方案中完成工作。
我也知道我需要使用UIGestureRecognizerStateChanged
和UIGestureRecognizerStateEnded
来处理所有这些事情,我只是不知道如何找到位置并设置位置。感谢。
这是我的代码:
- (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
}
}
答案 0 :(得分:0)
每次翻译更改时,重置translationInView
会让您的生活更加艰难。通过在手势开始时存储默认/开始位置并且每次从该默认/开始位置和手势的组合translationInView
设置新位置,可以更好地服务。
通过这种方式,您可以避免由于计算错误而导致任何漂移,并且您还可以使用默认/开始位置进行比较,如果需要,可以在手势结束时重置。
答案 1 :(得分:0)
在手势识别器上使用- (CGPoint)locationInView:(UIView*)view
方法。