Tengo 3 UIViews, superpuestas en la parte superior de una gran uiview. Quiero saber si el usuario toca el superior y no se preocupa por los otros. Tendré un par de botones en la segunda UIView y una UITable en la tercera UIView.Detectar si se tocó cierto UIView entre otras UIViews
Problema es que activeInteractionEngable en la primera vista y funciona, pero todas las otras vistas responden de la misma manera, incluso si lo desactivo. Si deshabilito userInteractionEnabled en self.view, ninguno de ellos responde. Tampoco puedo detectar qué vista se tocó en el método delegate touchesBegan.
Mi código:
UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
aView = userInteractionEnabled = YES;
[self.view addSubview:aView];
UIView *bView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 50)];
bView.userInteractionEnabled = NO;
[self.view addSubview:bView];
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//This gets called for a touch anywhere
}
Lo siento, sé que estás en el camino correcto, pero me cuesta un poco entender exactamente lo que dices. Estoy obteniendo el punto tocado por los toques desde su ubicación en la vista y podría técnicamente averiguar cuál fue la vista que el usuario tocó de esto, pero no estoy seguro de cómo se llama a hittest – Rudiger
. Se debe tener en cuenta que invoca 'locationInView:' con un parámetro de ' nil' le da la ubicación 'CGPoint' en el espacio de coordenadas de la ventana principal. –