ios uitableview gesture tap

ios - UITapGestureRecognizer en UIImageView dentro de UITablevlewCell no se llama



uitableview (3)

Actualmente tengo una UITableViewCell personalizada que contiene un UIImageView e intento agregar un UITAPGestureRecognizer en el UIImageView sin suerte. aquí hay un fragmento del código.

//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; tap.delegate = self; [imageView addGestureRecognizer:tap]; [tap release]; // handle method - (void) handleImageTap:(UIGestureRecognizer *)gestureRecognizer { RKLogDebug(@"imaged tab"); }

También he establecido userInteractionEnabled en la celda y la super visión de UIImageView, pero todavía no hay suerte, ¿alguna pista?

EDITAR :

También eliminé la selección de celda por cell.selectionStyle = UITableViewCellSelectionStyleNone; Podría esto ser un problema


En mi caso, parece que:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = CELL_ROUTE_IDENTIFIER; RouteTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[RouteTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } if ([self.routes count] > 0) { Route *route = [self.routes objectAtIndex:indexPath.row]; UITapGestureRecognizer *singleTapOwner = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageOwnerTapped:)]; singleTapOwner.numberOfTapsRequired = 1; singleTapOwner.cancelsTouchesInView = YES; [cell.ownerImageView setUserInteractionEnabled:YES]; [cell.ownerImageView addGestureRecognizer:singleTapOwner]; } else { cell.selectionStyle = UITableViewCellSelectionStyleNone; } return cell; }

Y selector:

- (void)imageOwnerTapped:(UISwipeGestureRecognizer *)gesture { CGPoint location = [gesture locationInView:self.tableView]; NSIndexPath *tapedIndexPath = [self.tableView indexPathForRowAtPoint:location]; UITableViewCell *tapedCell = [self.tableView cellForRowAtIndexPath:tapedIndexPath]; NSIndexPath *indexPath = [self.tableView indexPathForCell:tapedCell]; NSUInteger index = [indexPath row]; Route *route = [self.routes objectAtIndex:index]; }


La interacción del usuario de UIImageView está desactivada por defecto. Tienes que habilitarlo explícitamente para que responda a toques.

imageView.userInteractionEnabled = YES;


Swift 3

Esto funcionó para mí:

self.isUserInteractionEnabled = true