Gesto de reconocimiento (deslizar) en UIImageView

Estoy intentando NSLog cuando deslizo sobre un UIImageView con este código, pero no funciona por alguna razón. Alguna idea ?

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@"image2.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = [[UIScreen mainScreen] bounds]; [self.view addSubview:imageView]; UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)]; [recognizer setNumberOfTouchesRequinetworking:1]; [imageView addGestureRecognizer:recognizer]; } - (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer { NSLog(@"right swipe"); } 

Habilite la interacción del usuario con la vista UII, que está deshabilitada de manera pnetworkingeterminada.

 [imageView setUserInteractionEnabled:YES]; 

Agregar events de gestos de deslizamiento

 UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; // Setting the swipe direction. [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight]; // Adding the swipe gesture on image view [imageView addGestureRecognizer:swipeLeft]; [imageView addGestureRecognizer:swipeRight]; 

Manejando events de gestos deslizantes

 - (void)handleSwipe:(UISwipeGestureRecognizer *)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { NSLog(@"Left Swipe"); } if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { NSLog(@"Right Swipe"); } } 

Asegúrese de agregar imageView.userInteractionEnabled = YES; después de crear su UIImageView.

Esto permite a los usuarios interactuar con su vista, como tocar, arrastrar, deslizar u otros gestos generales.

Vea la documentation aquí .

En Swift 3

  ImageView.isUserInteractionEnabled = true let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.getSwipeAction(_:))) self.ImageView.addGestureRecognizer(swipeGesture) func getSwipeAction( _ recognizer : UISwipeGestureRecognizer){ if recognizer.direction == .right{ print("Right Swiped") } else if recognizer.direction == .left { print("Left Swiped") } } 

A diferencia de otras UIViews , UIImageView , como pnetworkingeterminado, viene con la interacción del usuario disabled . Incluya esta línea en su código y el gesto debería funcionar como se espera:

 imageView.userInteractionEnabled = YES; 

Me encontraba en problemas con esto, donde podía hacer que el UISwipeGestureRecognizer funcionara si lo añadía a mi propia vista, pero no al UIImageView individual. Gracias Jeff Ayan por el ejemplo del código Swift 3. Si utiliza el creador de interfaces, también puede marcar el recuadro Habilitado interacción de usuario para UIImageView en el inspector de attributes.