2012-07-20 11 views

Respuesta

45

Esto es realmente más fácil de lo que parece. Solo debe asegurarse de habilitar la interacción del usuario en imageView, y puede agregarle un gesto de toque. Esto se debe hacer cuando se crea una instancia de la celda para evitar que se agreguen múltiples gestos de toque en la misma vista de imagen. Por ejemplo:

- (instancetype)initWithCoder:(NSCoder *)aDecoder 
{ 
    if (self = [super initWithCoder:aDecoder]) { 
     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapMethod:)]; 

     [self.imageView addGestureRecognizer:tap]; 
     [self.imageView setUserInteractionEnabled:YES]; 
    } 

    return self; 
} 

- (void)myTapMethod:(UITapGestureRecognizer *)tapGesture 
{ 
    UIImageView *imageView = (UIImageView *)tapGesture.view; 
    NSLog(@"%@", imageView); 
} 
+0

En myTapMethod, ¿cómo accedería a imageView? – oyalhi

+1

@oyalhi la clase UIGestureRecognizer tiene una [vista] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/index.html#//apple_ref/occ/instp/UIGestureRecognizer/view) propiedad que te llevará allí. Ver mi respuesta actualizada. –

3

se puede utilizar una vez CustomButton UIImageView

+0

Gracias, solución simple. – dzensik

0

Un grifo gesto reconocedor puede ser muy hambriento de memoria y puede causar otras cosas en la página de romper. Me gustaría recomendarle que cree una celda de tabla personalizada, inserte un botón en el marco de celda personalizado y en el código de vista de tabla configure self.customtablecell.background.image en la imagen que desee. De esta forma, puede asignarle al botón un IBaction para que se ajuste a la vista que desee.

6

probar este

//within cellForRowAtIndexPath (where customer table cell with imageview is created and reused) 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleImageTap:)]; 
tap.cancelsTouchesInView = YES; 
tap.numberOfTapsRequired = 1; 
[imageView addGestureRecognizer:tap]; 

// handle method 
- (void) handleImageTap:(UIGestureRecognizer *)gestureRecognizer 
{ 
    RKLogDebug(@"imaged tab"); 
} 

asegúrese de u tiene ....

imageView.userInteractionEnabled = YES; 
+0

+ 1 para mostrar pasando el reconocedor a la función. Por qué este "tap.delegate = self"; cuando en realidad no lo estás usando? – Kevin

0

Uso ALActionBlocks a la acción en el bloque

__weak ALViewController *wSelf = self; 
imageView.userInteractionEnabled = YES; 
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithBlock:^(UITapGestureRecognizer *weakGR) { 
    NSLog(@"pan %@", NSStringFromCGPoint([weakGR locationInView:wSelf.view])); 
}]; 
[self.imageView addGestureRecognizer:gr]; 
Cuestiones relacionadas