2016-07-27 12 views
2

In meiner Anwendung habe ich eine UIView. Ich möchte Funktionalität, so dass Benutzer die Ansicht von seiner ursprünglichen Position auf bestimmte begrenzte Position ziehen kann für diese Ich habe verwendet ** UIPanGestureRecognizer Class ** und in gestureRecognizer.state == .Changed Zustand bin ich ändere die Koordinaten der Ansicht .Ich ist in der Lage, die im Hinblick auf begrenzte Position zu ziehen, wenn du langsam bewegen, aber das Problem ist, wenn der Benutzer die Ansicht, zieht sehr schnell nach oben oder unten auf den Bildschirm, dann ist die Ansicht kann darüber hinaus gezogen werden die Grenzen setze ich auf die Y-PositionVerwenden Sie UIPanGestureRecognizer, um die Ansicht von einer Position in eine begrenzte Position zu ziehen

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

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

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

    } 

ich habe das Problem seit letzten drei Tagen zu lösen versucht .Bitte geben Sie mir sugge lierte Vielen Dank im Voraus

+0

Ihr if-Anweisung überprüft die, ob die aktuelle Position der Einschränkung ist kleiner als der Grenzwert, und wenn die Bewegung sehr groß ist, kann es sein, größer als die obere Grenze. –

Antwort

1

Verwenden Sie die min Funktion Obergrenzen

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

bestimmen Wenn Sie Ihre Vergangenheit Einschränkung schnell und blasen ziehen, die min Funktion wird immer, dass die obere Einschränkung als Ihre neue Position zurückzukehren.

+0

Natürlich, ohne mehr Kontext zu Ihrer Situation zu sehen, nehme ich nur an, dass Sie die Min-Funktion wollen. Es ist möglich, dass Sie max. – jervine10

+0

Danke für Ihre Antwort, aber diese Lösung funktioniert nicht, es hat das gleiche Problem –

+0

Wie kann es über die Grenze fliegen, wenn Sie die Min- oder Max-Funktionen entsprechend verwendet haben? Ihre Einschränkung wird niemals über die von Ihnen festgelegten Grenzen hinausgehen. – jervine10