2012-11-28 17 views
7

jak ja chcą wprowadzić zwyczaj wołać w mkmapview używam tych klas CalloutMapAnnotationView.h i CalloutMapAnnotationView.mNiestandardowe CallOut nie wyświetla się poprawnie w ios6?

Mam wyodrębnione tych klas z poniższych linków

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.h

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.m

Te działają dobrze w ios5, ale w ios6, gdy klikam na wywołanie, widok mapy się porusza, a wywołanie nie jest wyświetlane poprawnie, jak pokazano na poniższych rysunkach, gdy byłem powiększany także n ot przychodzi poprawnie Próbowałem kilka sposobów, aby pozbyć się tego problemu, sprawdzając wersję OS i próbowałem zmienić niektóre metody w klasach, ale nie używać.

Po wdrożeniu tych w iOS5 widoku mapy nadchodzi tak enter image description here

W iOS6 Ten nie zbliża jak poprawnie jak w iOS5. na przykład: enter image description here

Odpowiedz

5

Ja też miałem do czynienia z tym samym problemem w iOS 6 przy użyciu tych klas. Zmiany te pracował dla mnie:

1) Zmiana tej metody:

Ta metoda będzie realizować w widoku mapy klasy

(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view 

w następującej kolejności wierszy

self.selectedAnnotationView = view; 

[self.mapView addAnnotation:self.calloutAnnotation]; 

2) W pliku CalloutMapAnnotationView.m

- (void)adjustMapRegionIfNeeded in this method first 5 lines like bellow 

    CGFloat xPixelShift = 0; 

    if ([self relativeParentXPosition] < 38) { 

     xPixelShift = 38 - [self relativeParentXPosition]; 

    } else if ([self relativeParentXPosition] > self.frame.size.width - 38) { 

    xPixelShift = (self.frame.size.width - 38) - [self relativeParentXPosition]; 

    } 

3) w tej samej klasy CalloutMapAnnotationView.m - (void)drawRect:(CGRect)rect w ten sposób po CGFloat parentX = [self relativeParentXPosition];

linii i nad rect = self.bounds; linia ADD po ​​linii

if ([self relativeParentXPosition] < 38) { 

     parentX = 38; 

    } else if ([self relativeParentXPosition] > self.mapView.frame.size.width - 38) { 

     parentX = [self relativeParentXPosition]-25; 

    } 

4) w tej samej klasy CalloutMapAnnotationView.m.

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

można użyć bezpośrednio powyższe zajęcia i korzystania z nich działają dobrze w obu iOS 5 & iOS 6. Należy dokonać niezbędnych zmian, zgodnie z własnymi wymaganiami.

+0

Dziękuję, to rozwiązanie pomogło mi. –

+0

Świetna odpowiedź to naprawdę pomogło. Dzięki stary. –

+0

hello ios rider – 08442

-2

tylko możesz dodać tytuł i nstring podtytuł tak, a _name jest tym, czego chcesz.

- (NSString *)title { 
    return _name; 
} 
- (NSString *)subtitle { 
    return [NSString stringWithFormat:@"%f, %f", _coordinate.latitude, _coordinate.longitude]; 
} 
+0

to nie jest to, o co w ogóle się pytamy –

Powiązane problemy