Wie beschränken pan-Geste-Bereich?
Ich bin mit meinem UIImageView
auf die ich mich mit anderen UIView
Rechteck. Durch Anwendung der pan-Geste UIView
Rechteck es wird außerhalb der UIImageView
auch. Ich will nicht zu ziehen, die außerhalb der UIImageView
Ich versucht habe folgenden code aber es funktioniert nicht so
-(void)handleMovementView:(UIPanGestureRecognizer *)recognizer
{
CGPoint movement;
if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded)
{
CGRect rec = recognizer.view.frame;
CGRect imgvw = self.imgViewCrop.frame;
if((rec.origin.x >= imgvw.origin.x && (rec.origin.x + rec.size.width <= imgvw.origin.x + imgvw.size.width)))
{
CGPoint translation = [recognizer translationInView:recognizer.view.superview];
movement = translation;
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:recognizer.view.superview];
[self handleMovementForHandlers:movement];
}
}
}
Habe ich, wenn ich Pan langsam es gilt, diesem Zustand, aber wenn ich schnell fahren ging es außerhalb der Bildansicht
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, Diese
Statt manuell computing, ob die Punkte innerhalb der view bounds verwenden
CGRectContainsPoint(rect, point)
. Dies ist, was funktioniert für mich, und ich mag es, weil es kürzer und besser lesbar ist:Zunächst die Koordinate (CGRect) von recognizer(Pan Gesture recognizer) erhalten dann zu koordinieren (CGRect) der Bildansicht(Deine Bildansicht).
Vergleichen und dann das Koordinatensystem entsprechend Ihrer Anforderung.
Wenn Sie immer noch vor ein problem, dann melden Sie die x-und y-Wert von image-anzeigen und-Erkennung.
Weiter geht 's mit @Matt Quiros' Antwort, und in Swift 3 /4: