xcode toque el button mientras se mueve con UIViewAnimation

No puedo hacer una acción con el button cuando el button se está moviendo. ¿Alguien puede ayudarme a ocultar el button de movimiento al tocar en él? No reactjs cuando presiono el button. aquí está el código:

-(void)createTurtle { NSUInteger r = arc4random_uniform(284) + 1; NSUInteger randomTitle = arc4random_uniform(1000000) + 1; turtle = [[UIButton alloc] init]; turtle.frame = CGRectMake(r, 0, 36, 47); [turtle setImage:[UIImage imageNamed:@"turtle.png"] forState:UIControlStateNormal]; [turtle addTarget:self action:@selector(turtleTouched:) forControlEvents:UIControlEventTouchDown]; [turtle setTitle:[NSString stringWithFormat:@"%lu", (unsigned long)randomTitle] forState:UIControlStateNormal]; [turtle setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.view bringSubviewToFront:turtle]; [self.view addSubview:turtle]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:16]; [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; turtle.frame = CGRectMake(turtle.frame.origin.x, self.view.frame.size.height, 36, 47); [UIView commitAnimations]; } - (void) turtleTouched: (id) sender { UIButton *button = sender; // Typecast sender button.hidden = YES; } 

Su método no se disparará aunque click él. pero se will fire when you click in its final frame mientras animas.

Digamos que el button tiene un marco (0,0,100,100) de (0,0,100,100) ,
Ahora lo mueve a un marco de (200,200,100,100 ).

mientras se mueve, si hace clic en la región de (200,200,100,100)-final frame , obtendrá events. pero en áreas en el middle of path como (50,50,100,100) , no obtendrá events.

Porque cuando comienzas a animar, el cuadro del button cambia instantáneamente al cuadro final mientras el button acaba de pasar de la position inicial a la position final.

Por lo tanto, en lugar de hacerlo, puede anular el método touchesBegan de su viewController y comprobar si el punto de contacto podría estar en el transitional frame .

 transitionFrame = [button.layer.presentationLayer frame]; 

El marco de su button siempre será el marco final en toda la animation.

Código agregado:

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ CGPoint p =[((UITouch *)[touches anyObject]) locationInView:self.view]; CGRect r= [turtle.layer.presentationLayer frame]; BOOL contains= CGRectContainsPoint(r, p); if(contains) turtle.hidden=YES; } 

Prueba este código:

 - (void) turtleTouched: (id) sender { UIButton *button = sender; // Typecast sender button.hidden = YES; } 

Si desea ocultarlo en cualquier evento táctil, use lo siguiente:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { buttonNamr.hidden =YES; }