iOS 8使用leftCalloutAccessoryView显示冗长内容时MKMapView标注上的奇怪动画

时间:2015-02-25 11:53:45

标签: ios ios8 mkmapview callout

我在MKMapView的标注视图中遇到了一个奇怪的问题。我正在使用leftCalloutAccessoryView设置一个包含图片和几个标签的视图,如下图所示。每当我点击注释时,会出现通常显示标注的动画,然后我的内容消失,并从左侧滑动重新出现,如gif图像所示。我不知道如何解决这个问题。这只发生在iOS 8上。在iOS 7上显示正常。

callout animation

1 个答案:

答案 0 :(得分:1)

我自己想通了。所以我只是发布这个来帮助任何人遇到同样的问题。问题在于我如何返回leftCalloutAccessoryView。我重写了该方法并通过在那里分配UIView来返回它。这是出于某种原因导致动画。我创建了一个新属性并初始化了附件视图,并且每次都在leftCalloutAccessoryView中返回相同的对象。这解决了问题。

@property (nonatomic, strong) UIView *accessory;

-(UIView *)leftCalloutAccessoryView {
    return self.accessory;
}

-(UIView *)accessory {
    if (_accessory == nil) {
        UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.mapView.frame.size.width-8, height)];
        // custom code here
        _accessory = backgroundView;
    }
    return _accessory;
}

这一切都解决了这个问题。