2016-07-27 43 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

相關問題