2016-07-27 9 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!) 

    } 

私は最後の3日間以来この問題を解決しようとしています。 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

minまたはmax関数を適切に使用した場合、どのように限界を超えて飛ぶことができますか?制約は、指定した範囲を超えないようにします。 – jervine10

関連する問題