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

iOS 8 Weird animation on MKMapView callout when using leftCalloutAccessoryView to display lengthy content

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

上看起来很好

我自己想出来了。所以我发布这篇文章是为了帮助 运行 遇到同样问题的任何人。问题在于我返回 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;
}

所有这些都解决了问题。