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.
Dziękuję, to rozwiązanie pomogło mi. –
Świetna odpowiedź to naprawdę pomogło. Dzięki stary. –
hello ios rider – 08442