iPhone SDK 3.2 UIGestureRecognizer forstyrrer UIView animasjoner?

stemmer
0

Er det kjente problemer med gest gjenkjennere og UIView klassen metoder for animasjon?

Jeg har problemer med en sekvens av animasjoner på en UIImageView fra UIGestureRecognizer tilbakeringing. Hvis sekvensen av animasjoner startes fra en standard tilbakeringing som TouchUpInside, animasjon fungerer fint. Hvis det er startet via UILongPressGestureRecognizer, da den første animasjonen hopper til slutten og den andre animasjonen begynner umiddelbart.

Her er et eksempel som illustrerer mitt problem. I .xib for prosjektet, har jeg en UIImageView som er koblet til viewToMove IBOutlet. Jeg har også en UIButton koblet til startknappen IBOutlet, og jeg har koblet sin TouchUpInside virkning mot startButtonClicked IBAction. Den TouchUpInside handlingen fungerer som jeg vil ha det til, men longPressGestureRecognizer hopper til slutten av den første animasjons etter ca et halvt sekund. Når jeg NSLog den andre animasjon (animateTo200) Jeg kan se at det kalles to ganger når et langt trykk starter animasjonen, men bare én gang når knappens TouchUpInside handlingen starter animasjonen.

- (void)viewDidLoad {
[super viewDidLoad];

UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(startButtonClicked)];
NSArray *recognizerArray = [[NSArray alloc] initWithObjects:longPressRecognizer, nil];
[startButton setGestureRecognizers:recognizerArray];

[longPressRecognizer release];
[recognizerArray release];
}

-(IBAction)startButtonClicked {

if (viewToMove.center.x < 150) {
    [self animateTo200:@Right to left finished:nil context:nil];
} else {
    [self animateTo100:@Right to left finished:nil context:nil];
}
}

-(void)animateTo100:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[UIView beginAnimations:@Right to left context:nil];
[UIView setAnimationDuration:4];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animateTo200:finished:context:)];
viewToMove.center = CGPointMake(100.0, 100.0);
[UIView commitAnimations];          
}

-(void)animateTo200:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[UIView beginAnimations:@Left to right context:nil];
[UIView setAnimationDuration:4];
viewToMove.center = CGPointMake(200.0, 200.0);
[UIView commitAnimations];          
}
Publisert på 23/04/2010 klokken 14:34
kilden bruker
På andre språk...                            


1 svar

stemmer
4

Du bør endre signaturen startButtonClickedtil - (void)startButtonClicked:(UIGestureRegognizer *)gestureRecognizerog deretter spørre gest kjenneren er stateeiendom i metoden. Bevegelsen gjenkjenneren vil kalle dens virkning metoden flere ganger med forskjellige tilstander (f.eks UIGestureRecognizerStateBeganog UIGestureRecognizerStateEnded).

Svarte 23/04/2010 kl. 18:31
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more