2016-07-27 44 views
2

在我的应用程序中,我有一个UIView。我想要的功能使用户可以将视图从其原始位置拖动到特定的有限位置,因为我已使用** UIPanGestureRecognizer Class **并在gestureRecognizer.state == .Changed条件我正在改变视图的坐标。我能够缓慢地移动视图到有限的位置,但问题是,如果用户拖动视图非常迅速向上或向下的屏幕,然后视图可以拉出超过限制我放在Y位置使用UIPanGestureRecognizer将视图从一个位置拖动到有限位置

if(upperLimit > (self.topbaseConstrant.constant * -1)) 

    { 
     self.topbaseConstrant.constant += gestureRecognizer.translationInView(self.view!).y 

    gestureRecognizer.setTranslation(CGPointZero, inView: self.view!) 

    } 

我一直在试图解决这个问题,因为最近三天。请给我sugge Stion的 在此先感谢

+0

您的if语句检查约束的当前位置是否小于极限,如果运动非常大,则可以大于上限。 –

回答

1

使用min函数来确定上限

let newPosition = topbaseConstrant.constant + panGestureRecognizer.translationInView(nil).y 
topbaseConstrant.constant = min(upperLimit, newPosition) 

如果快速拖动吹过去的约束,则min函数总是返回上层约束为你的新职位。

+0

当然,没有看到更多的情况下你的情况,我只是假设你想要min函数。你可能想用max。 – jervine10

+0

感谢您的回复,但此解决方案无法正常工作,但它有相同的问题 –

+0

如果您适当地使用了最小或最大函数,它如何超过极限?你的约束永远不会超越你指定的界限。 – jervine10

相关问题