Comment obtenir l'événement de clic à partir d'un bouton ajouté sur MKAnnotationView
Ce que quelqu'un sait si il existe un moyen d'obtenir de l'événement click d'un button
qui est ajouté à MKAnnotationView
ce button
est utilisé comme label pour afficher le nom de chaque broche sur le map
, maintenant, je successd de montrer une coutume view
(qui contient l'image, de texte ....) lorsque le pin
est cliqué, j'ai donc besoin de faire la même chose lorsque le bouton (label) est cliqué.
Merci pour tous les conseils que vous pouvez fournir.
code pour button
dans MKAnnotationView
:
UIButton * pinButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 140, 28)];
[pinButton.titleLabel setTextColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1]];
[pinButton setCenter:CGPointMake(pinAnnotationView.center.x + 70, pinAnnotationView.center.y + 10)];
[pinButton addTarget:self action:@selector(pinLabelClicked) forControlEvents:UIControlEventTouchUpInside];
[pinAnnotationView addSubView:pinButton];
[pinButton setUserInteractionEnabled:YES];
source d'informationauteur Sultana
Vous devez vous connecter pour publier un commentaire.
L'INTERFACE standard approche consiste à utiliser la légende de visualiser et d'ajouter un accessoire bouton progrmr montre.
Toutefois, si vous devez ajouter un bouton directement à la
MKAnnotationView
les problèmes avec votre approche sont que lesMKPinAnnotationView
'image par défaut (qui ne peut pas facilement être changé) est plus petit que le bouton que vous êtes en train d'ajouter la plupart de la touche n'est pas de répondre à la touche et même si vous passez à l'aide d'unMKAnnotationView
et augmenter la taille de l'image, laMKMapView
va empêcher le bouton de obtenir n'importe quelle touche.Ce que vous devez faire est d'ajouter un
UITapGestureRecognizer
le bouton (faites le geste de gestionnaire de la méthode d'action au lieu d'une addTarget sur le bouton) et ajouter le bouton à une plaineMKAnnotationView
avec une taille d'image appropriée au lieu d'uneMKPinAnnotationView
.Exemple:
Notez que cela permettra d'éviter l'affichage de la carte du
didSelectAnnotationView
délégué de la méthode de tir. Si vous avez besoin de cette méthode au feu (en plus le bouton geste de la méthode de gestionnaire d'), puis ajoutez les éléments suivants:J'ai ajouté un bouton à la légende de la vue (dans mon application) à l'aide de ce code (réduction pour plus de clarté):
Après avoir fait cela, vous avez besoin pour mettre en œuvre les MKMapViewDelegate à la poignée de rappel pour le délégué lorsque le bouton est actionné:
essayer de passer les touches de la sous-vue:
Je suis surpris que vous avez un problème, par contre si votre buttonView est en face? essayez de faire en sorte qu'il est:
[auto bringSubviewToFront:pinButton];