UIButton ne parviennent pas à être cliqué sur le calloutView de l'annotation
Le problème que je rencontrais: je clique sur le bouton, mais il semble que le CalloutView reçu mon clic au lieu du UIButton.
Quelques explications d'abord: 1.Le « SYSUMyAnnoCalloutView » est un 2.Le MKPinAnnotationView « SYSUMyCalloutImageView » est un UIImageView, que j'init et addSubview sur la « SYSUMyAnnoCalloutView » 3. la UIButton et la UILabel a été addSubviewed dans le " SYSUMyCalloutImageView »
code correspondant: 1. Dans le "SYSUMyAnnoCalloutView.m"
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if (selected){
[self.calloutImageView setFrame:CGRectMake(-75, -100, 230, 130)];
[self animateCalloutAppearance];
//[self.calloutImageView becomeFirstResponder];
//[self.calloutImageView.detailButton addTarget:self.calloutImageView action:@selector(clickForDetail) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.calloutImageView];
[self setCanShowCallout:NO];
}
else
{
//Remove your custom view...
[self.calloutImageView removeFromSuperview];
}
}
Dans le "SYSUMyCalloutImageView.m"
- (id)initWithImage:(UIImage *)image { self = [super initWithImage:image]; if (self){ //Label CGRect boundsForLabel; boundsForLabel.origin.x = 20; boundsForLabel.origin.y = 50; boundsForLabel.size.width = self.bounds.size.width - 100; boundsForLabel.size.height = 20; self.messageLabel = [[UILabel alloc] initWithFrame:boundsForLabel]; self.messageLabel.backgroundColor = [UIColor clearColor]; [self addSubview:self.messageLabel]; //detailButton CGRect buttonRect; buttonRect.origin.x = 20; buttonRect.origin.y = 80; buttonRect.size.width = boundsForLabel.size.width-50; buttonRect.size.height = 30; self.detailButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [self.detailButton setFrame:buttonRect]; [self.detailButton setTitle:@"Click for detail" forState:UIControlStateNormal]; self.detailButton.userInteractionEnabled = YES; //[self.detailButton addTarget:self.superview action:@selector(clickForDetail) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:self.detailButton];
} retour auto; }
Quelqu'un pourrait-il résoudre mon problème? sera vraiment apprécier que :)
merci pour votre conseiller. cela fonctionne! :) – JackieLam
n'oubliez pas de cliquer sur la coche pour définir cette réponse comme votre réponse acceptée :) – howanghk