37

如何在 iOS 中禁用用户与整个地图(MKMapView)的交互?我只想禁用缩放、点击等并显示静态地图。[self.mapView setUserInteractionEnabled:NO]没用。通过 Google 或 Stack 上的其他答案在此处找不到有效的解决方案(如果您找到有效的答案,请链接..)。以 iOS 5 为目标。应该有更简单的方法来做到这一点。

4

4 回答 4

81

关键是禁用缩放和滚动。

在 Objective-C 中:

self.mapView.zoomEnabled = false;
self.mapView.scrollEnabled = false;
self.mapView.userInteractionEnabled = false;

或斯威夫特:

mapView.isZoomEnabled = false
mapView.isScrollEnabled = false
mapView.isUserInteractionEnabled = false

顺便说一句,如果你想要一个静态地图,你可以考虑MKMapSnapshotter改用。这将创建地图的图像表示。如果您有注释或覆盖,则必须手动渲染它们,但根据您的用例,地图快照可能会完成这项工作。

于 2013-03-14T20:35:30.437 回答
20

您可以在 Interface Builder 中执行此操作,如下所示:

像这样

于 2015-02-01T15:59:09.223 回答
1

这个小技巧怎么样!只需放在具有所有相同框架细节的UIView顶部即可。MKMapView另请注意,backgroundColor此视图的clearColor

于 2013-03-14T19:10:57.983 回答
0

您可以将 MKAnnotationView 的 enabled 属性设置为 NO

要禁用缩放,您可以设置mapView.zoomEnabled = FALSE;

启用

一个布尔值,指示是否启用注释。

@property (nonatomic, getter=isEnabled) BOOL enabled

讨论

此属性的默认值为 YES。如果此属性的值为 NO,则注释视图会忽略触摸事件并且无法选择。子类也可以根据此属性的值以不同的方式显示注释内容。

于 2013-03-14T19:07:52.037 回答