2013-03-14 89 views
26

如何在iOS中禁用用户与整个Map(MKMapView)的交互?我只是想禁用缩放,点击等,并显示一个静态地图。 [self.mapView setUserInteractionEnabled:NO]没有工作。通过谷歌或其他答案找到没有工作解决方案在堆栈(请链接,如果你找到一个工作的答案..)。针对iOS 5.应该有一个更简单的方法来做到这一点。如何禁用MKMapView上的用户交互?

+0

仅供参考,我试过这个,并且该应用因为不是互动而被拒绝。我没有使用MKMapView,所以我实际上不能回答你的问题。 – 2013-03-14 19:08:05

+0

@SteveMallory我认为在一个用例中不应该拒绝这样做。其他应用程序做到了。看看foursquare:在一个使用案例(Shop Detail View)中,地图非常锁定,因为内容上下文是单店。 – sean 2013-03-14 19:14:11

+0

根据我的经验 - 通过在地图视图中删除“用户交互已启用”中的复选标记,在界面构建器中选择它时不起作用。但是,通过代码设置它为我工作。 – 2014-08-06 20:00:05

回答

59

,关键是要禁用缩放和滚动,如:

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

好吧,这个答案大部分适用于我。点击仍在通过,但这并没有打破我的用例,用户无法滚动或缩放,所以我很高兴。谢谢! – sean 2013-03-14 21:07:46

+0

利用这一点,我仍然能够使用两根手指旋转和倾斜手势将中心焦点完全移出视野,尽管它非常乏味。 – SandWyrm 2013-12-13 21:12:04

+0

如果您仍然需要在代码中执行操作,那么禁用用户交互有什么意义? – Mgamerz 2014-09-20 05:46:48

0

您可以设置MKAnnotationView对NO

enabled属性禁用变焦,您可以设置mapView.zoomEnabled = FALSE;

启用

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

@property (nonatomic, getter=isEnabled) BOOL enabled 

讨论

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

+0

我不明白这是如何适用于禁用整个地图的交互。我不希望用户能够在整个Map中的任何地方进行交互 - 在这个特定的用例中。 – sean 2013-03-14 19:11:04

1

这个小黑客怎么样! 只是在MKMapView的顶部有UIView,它们具有所有相同的帧详细信息。还要注意的是这种观点的backgroundColorclearColor

+0

这会使地图视图的[合法]按钮不可点击吗?苹果会这样吗? – DeyaEldeen 2016-08-22 12:24:00

17

为此,您可以在Interface Builder这样的:

Like this

相关问题