0

我在 iOS 6 中观察到地图的奇怪行为。这是添加单个注释的代码,在项目中绝对没有其他内容:

- (void)viewDidLoad
{
    [super viewDidLoad];
    MKPointAnnotation * p = [[MKPointAnnotation alloc] init];
    p.coordinate = CLLocationCoordinate2DMake(10, 10);
    p.title  = @" test test";
    [self.mapView addAnnotation:p];
    self.mapView.centerCoordinate = p.coordinate;
}


- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation
{
    MKPinAnnotationView * p = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"wassup" ];
    p.canShowCallout = YES;
    p.pinColor = MKPinAnnotationColorGreen;
    return p;
}

当它被选中并且我将地图移动(平移)小距离(如 0.5-1 厘米)时,在 iOS6 上,注释被取消选择。在早期版本上按预期工作并保持选中状态。

这是一个错误吗?有什么解决方法吗?

谢谢 !

4

2 回答 2

0

如果您不想取消选择注释视图,您应该继承 MKAnnotationView 并覆盖 setSelected:animated: 方法并停止取消选择注释视图。

于 2012-12-11T05:20:35.383 回答
0

苹果地图充满了错误。哈哈,你也注意到了。它是 iOS 6 的一个功能,有时会激怒用户。:)

在 annotaionView 方法中使用:

// iOS6 BUG WORKAROUND !!!!!!!
if (is6orMore) {
     [annotationView setTransform:CGAffineTransformMakeRotation(.001)]; //any small positive rotation
}

另见链接

于 2012-12-07T13:11:01.407 回答