【问题标题】:How to disable user interaction on MKMapView?如何禁用 MKMapView 上的用户交互?
【发布时间】:2013-03-03 07:42:50
【问题描述】:

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

【问题讨论】:

  • 仅供参考,我试过这个,但该应用程序因不具有交互性而被拒绝。我没有使用 MKMapView,所以我实际上无法回答您的问题。
  • @SteveMallory 在我认为的一个用例中不应该因为这样做而被拒绝。其他应用程序这样做。看一下foursquare:在一个用例(商店详细信息视图)中,地图几乎被锁定在适当的位置,这是有道理的,因为内容上下文是单个商店。
  • 根据我的经验 - 在界面生成器中通过删除地图视图的“启用用户交互”的复选标记时,它不起作用。但是,通过代码设置它对我有用。
  • @SteveMallory 我怀疑这是该应用程序被拒绝的主要原因,因为 Apple 已专门为 MKMapView 添加了内置参数,以允许开发人员打开或关闭这些功能。也许它们只是意味着整个应用程序普遍缺乏交互性。

标签: ios objective-c mkmapview mapkit


【解决方案1】:

关键是禁用缩放和滚动。

在 Objective-C 中:

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

或斯威夫特:

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

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

【讨论】:

  • 好的,这个答案在很大程度上对我有用。水龙头仍在通过,但这并没有破坏我的用例,用户无法滚动或缩放,所以我很高兴。谢谢!
  • 使用这个,我仍然可以使用两个手指旋转和倾斜手势将中心焦点完全移出视野,尽管它相当乏味。
  • 如果您仍然必须在代码中执行此操作,那么禁用用户交互有什么意义...?
  • 好提示!我只是在 viewDidLoad 中将 userInteractionEnabled 设置为 false,这似乎可以解决问题。 zoomEnabled 和 scrollEnabled 更改可能是多余的。
【解决方案2】:

您可以像这样在 Interface Builder 中执行此操作:

【讨论】:

    【解决方案3】:

    这个小技巧怎么样! 只需将UIView 放在具有所有相同框架细节的MKMapView 之上。还要注意这个视图的backgroundColor应该是clearColor

    【讨论】:

    • 这会使地图视图的 [legal] 按钮不可点击吗?苹果会这样吗?
    【解决方案4】:

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

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

    启用

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

    @property (nonatomic, getter=isEnabled) BOOL enabled
    

    讨论

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

    【讨论】:

    • 我不明白这如何适用于禁用与整个地图的交互。我不希望用户能够在整个地图中的任何地方进行交互——在这个特定的用例中。
    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多