2011-09-06 12 views
28

Estoy desarrollando una aplicación donde tengo múltiples controles en la vista, pero quiero habilitarlos cuando el usuario toca dos veces la vistaObjetivo-c: ¿Cómo detectar doble toque en la vista?

Puede tomar el ejemplo de hacer doble clic, pero en el dispositivo quiero ver el evento cuando su doble toque.

Respuesta

74

Debe agregar un UITapGestureRecognizer a la vista que desea que se toque.

De esta manera:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)]; 
    tapGesture.numberOfTapsRequired = 2; 
    [self.view addGestureRecognizer:tapGesture]; 
    [tapGesture release]; 
} 

- (void)handleTapGesture:(UITapGestureRecognizer *)sender { 
    if (sender.state == UIGestureRecognizerStateRecognized) { 
     // handling code 
    } 
} 
+5

en caso de que existan reconocimientos de gestos múltiples, puede asegurarse de presionar dos veces una de "alta prioridad" utilizando: [self.view.tapGestureRecognizer requireGestureRecognizerToFail: self.doubleTapGestureRecognizer]; –

+2

no se olvide de agregar el a la interfaz privada de su clase ... @interface IBMYourClassName()

8

Agregue UITapGestureRecognizer a la vista, con numberOfTapsRequired = 2.

+0

es UITapGestureRecognizer un control? No está en controles Library – Azhar

+0

Es una subclase UIGestureRecognizer. Necesitas escribirlo en el código. –

+0

Escribo este código con selector y UIAlert pero no funciona - (void) viewDidLoad { UITapGestureRecognizer * tapGesture = [[UITAPGestureRecognizer alloc] initWithTarget: self action: @selector (handleTapGesture :)]; tapGesture.numberOfTapsRequired = 2; \t [tapGesture release]; \t } – Azhar

Cuestiones relacionadas