Как отправить контакты в виде карты обратно в вид вызова? - PullRequest
0 голосов
/ 31 октября 2010

Я реализую приложение на основе MAPKit, в котором у меня была проблема с отображением контактов. Иногда они появляются поверх представления callOut. Я использовал следующий код, чтобы отправить контакты обратно:

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

              [mapView sendSubviewToBack:annotationView];
         }
}

Ответы [ 2 ]

1 голос
/ 05 ноября 2012

В IOS 5 и IOS 6, я пробую это и все нормально

штифт никогда не перекрывает CalloutView. Я использую пользовательский calloutview, в файле Base calloutView я добавляю это:

- (void)didMoveToSuperview {
    [super didMoveToSuperview];
    [self.superview bringSubviewToFront:self];
}
0 голосов
/ 31 октября 2010

Не могу вспомнить, является ли пузырь выноски вложенным представлением 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];
        }
    }
}

Надеюсь, это поможет

...