我正在实现基于MAPKit的应用程序,因为我的引脚显示有问题。有时他们会在callOut视图之上。我使用以下代码发回引脚:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
for (MKAnnotationView* annotationView in views)
{
[mapView sendSubviewToBack:annotationView];
}
}
答案 0 :(得分:1)
在IOS 5
和IOS 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];
}
}
}
希望这有帮助