Cuando un button UIB está animando, quiero reconocer un evento en el button

Posible duplicado:
El button UIB no se puede tocar mientras está animado con UIView animateWithDuration

Quiero animar un button UIB de izquierda a derecha, mientras que está animando si el usuario presiona el button, debería enviarme un evento, pero cuando el button que lo anima no es un evento de envío. Por favor, ayúdame, mi proyecto se detiene en este punto. Algunos desarrolladores me sugirieron que usara

[UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ myBtn.frame=CGRectMake(0, 100, myBtn.frame.size.width, myBtn.frame.size.height); } completion:^(BOOL finished) { NSLog(@"Animation Completed!"); }]; 

este método pero no funciona también, por favor, ¿qué debo hacer?

Debe utilizar el reconocedor tapGesture para get el evento Tap en ese button como se muestra a continuación en viewDidLoad .

 - (void)viewDidLoad { UITapGestureRecognizer *btnTapped = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)]; btnTapped.numberOfTapsRequinetworking = 1; btnTapped.delegate = self; [myBtn addGestureRecognizer:btnTapped];//here your button on which you want to add sopme gesture event. [btnTapped release]; [super viewDidLoad]; } 

Y ese es tu código para animar el uso del button tal como está.

 [UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ myBtn.frame=CGRectMake(0, 100, myBtn.frame.size.width, myBtn.frame.size.height); } completion:^(BOOL finished) {NSLog(@"Animation Completed!");]; 

A continuación se muestra el método Delegado para permitir el reconocimiento simultáneo.

  - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } here Above methods Returning YES is guaranteed to allow simultaneous recognition. returning NO is not guaranteed to prevent simultaneous recognition, as the other gesture's delegate may return YES - (void)tapAction:(UITapGestureRecognizer*)gesture { //do here which you want on tapping the Button.. } 

EDITAR: si desea encontrar el gesto táctil, debe usar UILongPressGestureRecognizer en lugar de UITapGestureRecognizer y establecer la duración.

Espero que te pueda ayudar.

El UIButton no se puede usar mientras está en animation, debe usar un NSTimer :

 timer = [NSTimer timerWithTimeInterval:.005 target:self selector:@selector(moveButton) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] timer forMode:NSRunLoopCommonModes]; // you can change the speed of the button movement by editing (timerWithTimeInterval:.005) value -(void)moveButton{ button.center = CGPointMake(button.center.x+1,button.center.y); if (button.frame.origin.x>=self.view.frame.size.width ) { [timer invalidate]; //The event that will stop the button animation } } 

El problema es que el button ya tiene el marco final y no funciona con la position actual.

@jrturton ha dado una buena solución en esta pregunta: el button UIB no se puede tocar mientras está animado con UIView animateWithDuration

Básicamente implementa el método touchesBegan: para trabajar con la presentaciónLayer.