J'ai un MKOverlayView personnalisé sur ma carte et je voudrais détecter les touches. Cependant, je n'arrive pas à obtenir la superposition pour répondre. J'espérais que ça allait être quelque chose d'aussi stupide que l'oubli de mettre userInteractionEnabled OUI ... mais hélas, pas de chance, ilMKOverlayView et touche
.... actuellement, voici comment je l'ai:
//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;
}
ma classe personnalisée overlay implémente simplement touchesBegan et étend MKCircleView
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touch!");
}
merci pour une réponse aussi claire qui a fonctionné parfaitement –