【发布时间】:2015-02-13 15:34:50
【问题描述】:
我正在使用 PanGestureRecognizer 并在 UIGestureRecognizerStateChanged 中让用户手指移动屏幕上的视图。我将它用于类似 Tinder 的滑动手势,我现在想将视图的移动限制在水平轴或垂直轴上,无论用户开始滑动的方向是什么。我一直在上下搜索,但在这里没有找到合适的东西。
有没有什么聪明的方法可以根据用户开始滑动视图的方向来限制轴的移动?
非常感谢!
更新:这是移动视图的当前代码:
- (void)dragged:(UIPanGestureRecognizer *)gestureRecognizer
{
CGFloat xDistance = [gestureRecognizer translationInView:self].x;
CGFloat yDistance = [gestureRecognizer translationInView:self].y;
// xDistance = 0;
[parentView dragged:yDistance];
switch (gestureRecognizer.state) {
case UIGestureRecognizerStateBegan:{
self.originalPoint = self.center;
break;
};
case UIGestureRecognizerStateChanged:{
CGFloat rotationAngel = 0;
CGFloat scale = 1;//MAX(scaleStrength, 0.93);
CGAffineTransform transform = CGAffineTransformMakeRotation(rotationAngel);
CGAffineTransform scaleTransform = CGAffineTransformScale(transform, scale, scale);
self.transform = scaleTransform;
self.center = CGPointMake(self.originalPoint.x + xDistance, self.originalPoint.y + yDistance);
...
break;
};
case UIGestureRecognizerStateEnded: {
float moveDistAction = 60;
if (yDistance > moveDistAction) {
// view swiped down
...
} else if (yDistance < -moveDistAction) {//100 150
// view swiped up
...
} else {
// dragging cancelled
...
}
break;
};
case UIGestureRecognizerStatePossible:break;
case UIGestureRecognizerStateCancelled:break;
case UIGestureRecognizerStateFailed:break;
}
}
【问题讨论】:
-
发布您当前的代码
-
您是否已有允许任意移动的代码?发布该代码,以便我们查看您拥有的内容。然后我们可以帮助您将其限制在一个方向。
标签: ios objective-c swipe