¿Cómo hacer que un button en un SubView animado funcione durante el movimiento de ese SubView?

En el siguiente código, el button subView con button oscila, es decir, se mueve horizontalmente desde el punto de origen al área roja y hacia atrás.

Pero no recibe clics en el button, sino que recibe clics en el área roja.

introduzca la descripción de la imagen aquí

Quiero hacer que este button en un SubView animado funcione durante el movimiento de ese SubView solo en el eje x.

Al estar en el nivel principiante de esta tecnología, me quedé atrapado aquí.

A continuación se muestra el código de los files .h y .m, respectivamente.

ViewController.h

#import <UIKit/UIKit.h> @interface ViewController : UIViewController { IBOutlet UIView *viewWithButton; } @property (strong, nonatomic) UIView *viewWithButton; - (void) animateButton; @end 

ViewController.m

 @implementation ViewController @synthesize viewWithButton; - (void) animateButton { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:10]; [UIView setAnimationRepeatCount:HUGE_VALF]; [UIView setAnimationRepeatAutoreverses:YES]; CGPoint pos = viewWithButton.center; pos.x = 400; viewWithButton.center = pos; [UIView commitAnimations]; } - (IBAction)btn { NSLog(@"Button Tapped"); } 

Prueba esta esperanza, te ayudará. Tome una matriz y agregue su button a esa matriz.

 @property (nonatomic, retain) NSMutableArray *arrBtn; [self.arrBtn addObject:btn]; 

hacer animation como esta

 [UIView animateWithDuration:8.0f delay:0.0f options:UIViewAnimationOptionAllowUserInteraction animations:^{ } completion:^(BOOL finished){ }]; 

agregue este método para ponerse en contacto

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInView:self.view]; for (UIButton *button in self.arrBtn) { if ([button.layer.presentationLayer hitTest:touchLocation]) { // This button was hit whilst moving - do something with it here NSLog(@"button title is %@",button.titleLabel.text); [button setBackgroundColor:[UIColor cyanColor]]; NSLog(@"Button Clicked"); break; } } }