如何将地图视图中的引脚发送回呼出视图?

时间:2010-10-31 10:11:49

标签: objective-c ios4 mkmapview

我正在实现基于MAPKit的应用程序,因为我的引脚显示有问题。有时他们会在callOut视图之上。我使用以下代码发回引脚:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
 {
          for (MKAnnotationView* annotationView in views) 
         {

              [mapView sendSubviewToBack:annotationView];
         }
}

2 个答案:

答案 0 :(得分:1)

IOS 5IOS 6,我试试这个,没关系

该引脚永远不会与CalloutView重叠。 我使用自定义calloutview,在文件Base calloutView中我添加了这个:

- (void)didMoveToSuperview {
    [super didMoveToSuperview];
    [self.superview bringSubviewToFront:self];
}

答案 1 :(得分:0)

无法记住标注气泡是否是annotationView的子视图,如果以下应该有效...... 如果您要为iOS 4.0及更高版本编码,可以使用这些

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)annotView {
     [mapView sendSubviewToBack:annotView];
}

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annotView {  
     [mapView bringSubviewToFront:annotView];   
}

否则尝试在annotationView

中实现
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self];
    if ([self pointInside:point withEvent:event]) {
        UIView *mySuperview = self.superview;
        while (mySuperview && ![mySuperview isKindOfClass:[MKMapView class]]) {
            mySuperview = mySuperview.superview;
        }
        if (mySuperview) {
            [mySuperview bringSubviewToFront:self];
        }
    }
}

希望这有帮助