2012-03-30 8 views
0

Ich habe ein UIImageview-Objekt entlang eines Pfades bewegt und ich habe CABasic Animation und BezierCure, um das Objekt entlang des Pfades zu bewegen, jetzt ist das Problem, wenn ich das Verschieben berühren Objekt Das Berührungsereignis wird von UIImageView nicht erkannt, aber das Berührungsereignis wird von der Hauptansicht empfangen. Kann mir jemand helfen, dieses Problem zu lösen? Unten ist mein CodeiPhone - Touch-Ereignis wird nicht von UIImageView beim Animieren mit CABasicAnimation empfangen

UITouch *touch = [[event allTouches] anyObject]; 
if (![touch.view isEqual: beaconPose1]) { 
    return; 
} 
[touch.view.layer removeAllAnimations]; 

CGPoint location = [touch locationInView: self.view]; 

    CGRect frame = touch.view.frame; 
frame.origin.x = location.x; 
frame.origin.y = location.y; 
///frame.origin.x += xDisplacement; 
//frame.origin.y += yDisplacement; 
touch.view.frame = frame; 

- Code, in dem Benutzer-Interaktion

[beaconPose1 setUserInteractionEnabled:true]; 

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
pathAnimation.duration = 1.0f; 
pathAnimation.path = beaconPose3Path.CGPath; 
pathAnimation.calculationMode = kCAAnimationLinear; 

CABasicAnimation *fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
fullRotation.fromValue = [NSNumber numberWithFloat:0]; 
fullRotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)]; 
fullRotation.duration = pathAnimation.duration; 
fullRotation.repeatCount = pathAnimation.duration/fullRotation.duration; 
[beaconPose1.layer addAnimation:fullRotation forKey:@"360"]; 
[beaconPose1.layer addAnimation:pathAnimation forKey:@"movingAnimation"]; 
+0

Ich bin nicht sicher, aber dies könnte Sie Hilfe http://stackoverflow.com/questions/3775577/uiimageview-touch-event – Anand

+0

ich gleiche Logik, bot UIImageView keine Daten empfängt die Berührungsereignisse :( – Pete

+0

plz implementiert poste den Code, den du verwendest, der zum Überprüfen hilft ... –

Antwort

0
aktiviert ist

ich herausgefunden, wie diese, wird

Das Objekt unter CAKeyframeAnimation oder CABasicAnimation zu tun, nicht auf Berührung reagieren Ereignis, stattdessen können wir berechnen, ob der Ort der Berührung mit dem Bereich des Objekts unter Verwendung des Pythagorus-Theorems ist.

+0

Ich schätze das ist falsch Überprüfen Sie meine Antwort. –

0

Ich fürchte, die derzeit akzeptierte Antwort ist falsch:

Wenn der Benutzer seinen Finger auf dem Bildschirm bringt, alle Ansichten sind Hit-geprüft mit der Berührungsposition. Wenn sie jedoch getestet werden, wird die Ansicht frame angefordert. Dies ist jedoch mit dem modelLayer s-Frame verknüpft, der der Endpunkt Ihrer Animation ist.

Was Sie wollen, ist Hit-Test der , aber ich denke, das ist nicht möglich.

Verwandte Themen