ios - 点击 map View 时未调用 didDeselectAnnotationView

标签 ios objective-c mkmapview mkannotationview

我构建了一个 map View Controller 并且一切正常。在 map 上选择注释 View 时,屏幕上会显示自定义 View 以显示有关该注释的一些信息。点击 map 将取消选择注释 View 并隐藏自定义 View 。

我现在有一个要求,如果 View 上只有一个注释,则在插入 map View Controller 时显示自定义 View 。所以我简单地实现

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

本地图 View 完成加载时。

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
    if (self.viewModel.pointsArray.count == 1) {
        GSMapsLocationPoint* point = self.viewModel.pointsArray.lastObject;
        MKAnnotationView *annotationView = [self.mapsView viewForAnnotation:point];
        [self mapView:self.mapsView didSelectAnnotationView:annotationView];
    }
}

但是,当我点击 map 时,- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 不会被调用。如果我手动点击该注释 View ,则 didSelectAnnotationView 将被正确调用。

似乎在代码中调用 didSelectAnnotationView 不会改变某些状态,因此 map View 不知道有一个注释 View 被选中。

我该如何解决这个问题?提前致谢。

最佳答案

您应该使用 selectAnnotation: 而不是 didSelectAnnotationView:,尝试替换为:

[self mapView:self.mapsView didSelectAnnotationView:annotationView];

用这个:

[self.mapsView selectAnnotation:point animated:YES];

didSelectAnnotationView: 将在选择注释时由您的 mapView 调用。

关于ios - 点击 map View 时未调用 didDeselectAnnotationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36932288/

相关文章:

ios - 检测点击 UITableViewCell 内的 UICollectionView

ios - 调整大小时如何禁用子层的缩放?

ios - MapView 的 UIImageView subview

ios - 如何仅在 iOS 版本大于特定版本时导入文件

android - 是否可以通过页内链接在 iOS 和 Android 中调用 native 共享功能?

ios - 可以将 NSmanagedObject 移动到另一个 NSManagedContext 吗?

ios - 存储 iPhone 数据的最佳方式(自定义 NSObject)

ios - 如何解析 facebook 喜欢 json 响应?

iphone - 它会影响 map 加载速度/性能吗? addAnnotation 与 addAnnotations

Swift:在 MKMapView 中绘制一个半球体