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
.