Ich habe eine ziehbare Klasse, die UIImageView erbt. Der Mauszeiger funktioniert gut, wenn die Ansicht nicht animiert wird. Aber beim Animieren reagiert es nicht auf Berührungen. Sobald die Animation abgeschlossen ist, funktioniert die Berührung erneut. Aber ich brauche es, um die Animation bei Berührungen anzuhalten und fortzusetzen, wenn die Berührung endet. Ich verbrachte den ganzen Tag damit, es zu erforschen, konnte aber den Grund nicht herausfinden.UIView touchsbegan reagiert nicht während der Animation
Hier ist mein Animationscode.
[UIView animateWithDuration:5.0f
delay:0
options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
animations:^{
self.center = CGPointMake(160,240);
self.transform = CGAffineTransformIdentity;
}
completion:nil
];
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
NSLog(@"touch");
CGPoint pt = [[touches anyObject] locationInView:self];
startLocation = pt;
[self.layer removeAllAnimations];
[[self superview] bringSubviewToFront:self];
}
Brilliant. Vielen Dank! – bzlm
btw Ich hatte Probleme damit, auch wenn die Position nicht animiert, aber eine andere Eigenschaft ('frame' in meinem Fall) ist ... man bekommt immer noch Taps, die einfach verschluckt werden, obwohl der View' hitTest' und 'pointInside' Methoden werden korrekt aufgerufen und zurückgegeben. Außerdem mache ich nur 'if ([viewInside: point withEvent: event])' - keine Notwendigkeit für 10 Slop-Punkte – AlexChaffee