检测MK注释视图弹出气泡上的轻拍

4

我在地图上有一个注释。当我选择一个注释时,我会显示一个带有自定义视图的气泡。现在,当我点击气泡时,我想跳转到新的视图控制器,但是当我点击视图时,气泡视图就消失了。

-(void)mapView:(MKMapView *)mapView1 didSelectAnnotationView:(MKAnnotationView *)view
{
    NSLog(@"selected");
    if(![view.annotation isKindOfClass:[MKUserLocation class]])
    {
        CustomInfoWindow *calloutView =  [[[NSBundle mainBundle] 
        loadNibNamed:@"infoWindow"owner:self options:nil] objectAtIndex:0];
        CGRect calloutViewFrame = calloutView.frame;
        calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 15, -calloutViewFrame.size.height);
        calloutView.frame = calloutViewFrame;
        [calloutView.imagePlace.layer setBorderColor: [[UIColor orangeColor] CGColor]];
        [calloutView.imagePlace.layer setBorderWidth: 3.0];

        NSData* imageData = [[NSData alloc] initWithContentsOfURL:
        [NSURL  URLWithString:@"http://farm3.staticflickr.com/2926/14605349699_67a1d51b80.jpg"]];
        UIImage* image = [[UIImage alloc] initWithData:imageData];
        [calloutView.imagePlace setImage:image];
        [view addSubview:calloutView];
    }
}

-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 
{
    for (UIView *subview in view.subviews ){
        [subview removeFromSuperview];
    }
}

https://dev59.com/V3A75IYBdhLWcg3wP2kg - codeIgnitor
2个回答

0
我不是专家,但你可能想要在你的视图中添加一个UITapGestureRecognizer。
使用以下代码:
UITapGestureRecognizer *tgr = [[UITabGestureRecognizer alloc] initWithTarget:self action:@selector(showNextView)];
calloutView.addGestureRecognizer(tgr);

并且

- (void)showNextView {
    ...
}

0

气泡没有逻辑,你需要使用 callout accessory。因此,请使用 MapView 代理方法:

- (void)mapView:(MKMapView *)mv annotationView:(MKAnnotationView *)pin calloutAccessoryControlTapped:(UIControl *)control;

在viewForAnnotation代理方法中添加callout。例如:
UIButton *myDetailAccessoryButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
myDetailAccessoryButton.frame = CGRectMake(0, 0, 23, 23);
myDetailAccessoryButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
myDetailAccessoryButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
pinView.rightCalloutAccessoryView = myDetailAccessoryButton;

希望我的回答能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接