iOS 6
我在使用这些类时也遇到了同样的问题。这些更改对我有用:
1)这种方法的改变:
您将在地图视图类中实现此方法
(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view
按照以下行的顺序
self.selectedAnnotationView = view;
[self.mapView addAnnotation:self.calloutAnnotation];
2) 在 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) 在同一个类 CalloutMapAnnotationView.m - (void)drawRect:(CGRect)rect
在这个方法之后CGFloat parentX = [self relativeParentXPosition];
行并在rect = self.bounds;
此行上方添加以下行
if ([self relativeParentXPosition] < 38) {
parentX = 38;
} else if ([self relativeParentXPosition] > self.mapView.frame.size.width - 38) {
parentX = [self relativeParentXPosition]-25;
}
4) 在同一类 CalloutMapAnnotationView.m 中。
- (void)didMoveToSuperview {
[super didMoveToSuperview];
[self.superview bringSubviewToFront:self];
}
您可以直接使用上述类并使用它们在 iOS 5 和 iOS 6 中都可以正常工作。您应该根据您的要求进行必要的更改。