recognizer ios uiscrollview uiimageview uitapgesturerecognizer

ios - recognizer - Detectar grifo en UIImageView dentro de UIScrollView



uipangesturerecognizer (2)

Tu error está aquí:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:item action:@selector(imageTapped:)];

Necesita cambiar el objetivo a "self" en lugar de "item", luego no se bloqueará.

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];

Tengo una vista de desplazamiento horizontal llena de UIImageViews .

Quiero detectar un toque en UIImageView y cambiar el color de fondo.

De alguna manera, el gesto de tap no funciona o eso.

Sin embargo, cuando agrego un gesto de toque a la vista de desplazamiento, funciona. El scrollview.background color puede ser cambiado.

¡Pero quiero detectar un toque en el UIImageViews que contiene!

UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, 768, 127)]; [scrollView setScrollEnabled:YES]; scrollView.backgroundColor = [UIColor orangeColor]; [scrollView setShowsHorizontalScrollIndicator:NO]; UIImageView *contentOfScrollView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 1, 1130, 125)]; scrollView.contentSize = CGSizeMake(contentOfScrollView.frame.size.width, contentOfScrollView.frame.size.height); for (int aantal=0; aantal < 6; aantal++) { UIImageView *item = [[UIImageView alloc] initWithFrame:CGRectMake(3+(aantal*188), 0, 185, 125)]; item.backgroundColor = [UIColor yellowColor]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:item action:@selector(imageTapped:)]; tap.numberOfTapsRequired = 1; tap.cancelsTouchesInView=YES; item.userInteractionEnabled = YES; [item addGestureRecognizer:tap]; [contentOfScrollView addSubview:item]; } //UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; //[scrollView addGestureRecognizer:tap]; scrollView.userInteractionEnabled=YES; scrollView.delaysContentTouches=NO; [scrollView addSubview:contentOfScrollView]; [self.view addSubview:scrollView];

Y esta es la función de captura de imagen.

-(void)imageTapped:(UITapGestureRecognizer *)gesture { NSLog(@"tapped!"); gesture.view.backgroundColor = [UIColor whiteColor]; }


La interacción del usuario está establecida en NO de forma predeterminada para UIImageView , por lo que debe configurarlo en YES . Lo configura en sí para "elemento", pero no para contentOfScrollView .