2012-01-29 10 views
8

Puedo usar el siguiente código para manejar golpe 1 dedo en mi código:cómo manejar 1 a 3 dedos deslizar gesto en IOS

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)]; 
    [swipe setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [swipe setDelaysTouchesBegan:YES]; 
    [[self view] addGestureRecognizer:swipe]; 

Sé que puedo añadir la siguiente línea para que sea mango 2 dedos deslizar :

[swipe setNumberOfTouchesRequired:2]; 

sin embargo cuando agrego el código anterior 1 pasar el dedo ya no se detecta ya que el número de toques requeridos es ahora 2. ¿Qué puedo hacer para que mi trabajo código para 1, 2 o 3 dedos deslizar?

He intentado utilizar el siguiente código, pero esto no hace lo que quiero hacer.

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)]; 
    [panRecognizer setMinimumNumberOfTouches:1]; 
    [panRecognizer setMaximumNumberOfTouches:3]; 
    [panRecognizer setDelaysTouchesBegan:YES]; 
    [[self view] addGestureRecognizer:panRecognizer]; 
    [panRecognizer release]; 

Gracias.

Respuesta

12

En su handleViewsSwipe puede obtener la propiedad numberOfTouch del reconocedor de gestos.

- (void)handleViewsSwipe:(UISwipeGestureRecognizer *)recognizer { 
    NSUInteger touches = recognizer.numberOfTouches; 
    switch (touches) { 
     case 1: 
      break; 
     case 2: 
      break; 
     case 3: 
      break; 
     default: 
      break; 
    } 
} 

Simplemente cambie el mismo método de qué hacer dependiendo de la cantidad de toques que reciba.

+1

Agregué el código anterior pero el handleViewsSwipe solo se dispara cuando toques es 1. Si trato de usar 2 dedos o 3 dedos para deslizar, nunca se llama. ¿Alguna idea? – atbebtg

+1

Además de este código, deberá hacer lo que rob dijo y agregar 3 reconocedores de gestos a la vista. uno por cada número de dedos. todos los cuales pueden referirse al mismo método. – MobileOverlord

+0

gracias que funciona! – atbebtg

10

Añadir tres reconocedores golpe gesto a la vista:

for (int i = 1; i <= 3; ++i) { 
    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)]; 
    swipe.numberOfTouchesRequired = i; 
    swipe.direction = UISwipeGestureRecognizerDirectionLeft; 
    swipe.delaysTouchesBegan = YES; 
    [self.view addGestureRecognizer:swipe]; 
} 

trabajado para mí.

+0

Hola @rob mayoff por favor mira mi pregunta http://stackoverflow.com/questions/20761686/track-touch-points-in-mutlitouch Estoy luchando para resolver esto. Por favor, ayúdame. Si esto puede ser resuelto usando UIPangesture Recogniser – Ranjit

Cuestiones relacionadas