Ios mkannotation视图中的按钮操作不起作用?

Ios mkannotation视图中的按钮操作不起作用?,ios,objective-c,iphone,mkmapview,mkannotationview,Ios,Objective C,Iphone,Mkmapview,Mkannotationview,您好,我在地图上遇到了一种情况,我成功地显示了自定义注释。当点击注释时,我必须显示一个包含一些信息和一个按钮的视图。当用户点击按钮时,应显示一个警报 代码如下 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { if (![view.annotation isKindOfClass:[MKUserLocation class]]) {

您好,我在地图上遇到了一种情况,我成功地显示了自定义注释。当点击注释时,我必须显示一个包含一些信息和一个按钮的视图。当用户点击按钮时,应显示一个警报

代码如下

 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
       if (![view.annotation isKindOfClass:[MKUserLocation class]]) {

          POCustomAnnotation *annotation = (POCustomAnnotation *)[view annotation];

          UIView *bgview=[[UIView alloc]initWithFrame:CGRectMake(-30, -150,130, 150)];
          bgview.backgroundColor=[UIColor grayColor];
          UILabel *templbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 130, 120)];

          templbl.text=annotation.displayText;
          templbl.textAlignment=NSTextAlignmentRight;
          templbl.numberOfLines=10;

          [bgview addSubview:templbl];

          UIButton *tembtn=[UIButton buttonWithType:UIButtonTypeCustom];        
          [tembtn setTitle:@"More info" forState:UIControlStateNormal];
          [tembtn addTarget:self action:@selector(annotationBtnAction:)     
           forControlEvents:UIControlEventTouchUpInside];         
          tembtn.backgroundColor=[UIColor grayColor];   
           tembtn.frame=CGRectMake(0, 121, 130, 30);       
          [bgview addSubview:tembtn];


          [view addSubview:bgview];
    } else {

          POMapAnnotationView *callout = (POMapAnnotationView *)[[[NSBundle mainBundle]loadNibNamed:@"POMapAnnotationView" owner:self options:nil] objectAtIndex:0];
          view.canShowCallout = NO;
          CGRect calloutViewFrame = callout.frame;
          calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width / 2 + 15, - calloutViewFrame.size.height);
          callout.frame = calloutViewFrame;
          [callout setLabelText:[self distanceText]];
          [view addSubview:callout];
     }
 }
我正在努力处理这件事

 [tembtn addTarget:self action:@selector(annotationBtnAction:)     
              forControlEvents:UIControlEventTouchUpInside]; 
这是不会被呼叫的。 我的屏幕是这样的


提前感谢

您需要为此按钮设置框架。这在代码中是看不到的。根据需要调整框架的x位置和y位置

UIButton *tembtn=[UIButton buttonWithType:UIButtonTypeCustom];

// Frame required to render on position and size. Add below line 
[tembtn setFrame:CGRectMake(0, 0, 100, 50)];

[tembtn setTitle:@"More info" forState:UIControlStateNormal];
[tembtn addTarget:self action:@selector(annotationBtnAction:)
 forControlEvents:UIControlEventTouchUpInside];
tembtn.backgroundColor=[UIColor grayColor];
[view addSubview:tembtn];
编辑:

找到原因您只能点击呈现注释的区域。

以下是定制呼叫的简单演示:


我已经编辑了我的问题,但仍然没有取消调用AnnotationView方法而不是按钮action@ismail-示例演示。您可以将按钮作为子视图添加到bgview。还添加了[view sizeToFit];而你想在点击按钮时执行的动作,你可以用didselectanotation编写代码