tengo una MKOverlayView personalizada en mi mapa y me gustaría detectar toques. Sin embargo, parece que no puedo obtener la superposición para responder. Tenía la esperanza de que iba a ser algo tan tonto como olvidarse de fijar userInteractionEnabled a sí ... pero por desgracia, no hay suerteMKOverlayView y toques
.... Actualmente, aquí es cómo lo tengo:
//map delegate overlay:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if (_radiusView !=nil) {
[_radiusView removeFromSuperview];
[_radiusView release];
_radiusView = nil;
}
_radiusView = [[CustomRadiusView alloc]initWithCircle:overlay];
_radiusView.userInteractionEnabled = YES;
_radiusView.strokeColor = [UIColor blueColor];
_radiusView.fillColor = [UIColor grayColor];
_radiusView.lineWidth = 1.0;
_radiusView.alpha = 0;
//fade in radius view
[UIView beginAnimations:@"fadeInRadius" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.6];
_radiusView.alpha = .3;
[UIView commitAnimations];
return _radiusView;
}
mi clase de plantilla personalizada simplemente implementa touchesBegan, y se extiende MKCircleView
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touch!");
}
gracias por una respuesta tan clara que funcionó a la perfección –