MKMapView 在 iDevice 上停止响应

Posted

技术标签:

【中文标题】MKMapView 在 iDevice 上停止响应【英文标题】:MKMapView stops responding on iDevice 【发布时间】:2014-04-25 22:31:46 【问题描述】:

如果这个问题有点长,但不确定如何使用较少的信息提问,请见谅。

我正在使用 XCode 5.1.1 和带有 ios 7.1 的 iPhone 5s

我有一个应用程序,它使用带有多个表的 SQLite3 数据库。用户可以通过多种方式访问​​这些。其中包括“查找附近”。 这是为多表完成的。 MKMapView 加载成功, 显示位置和用户位置显示的引脚。 起初我可以点击一个图钉,它会加载下一个视图控制器,它是一个详细视图,但经过一定次数的使用后,MKMapView 完全停止响应。我无法滚动地图,点击图钉没有任何动作。 一旦一个 MKMapView 停止响应,其他任何一个都不起作用。我无法在 sim 卡中复制它,如果我连接设备并运行它,它会按预期工作,因此不会出现错误消息。保持设备连接会重建应用程序并在设备上重新加载,从而防止失败。

MKMapView 是唯一加载到视图中的东西。 在 IB 中未选中视图的用户交互。 检查 MKMapView 的所有用户交互功能。 .m 设置为 MKMapViewDelegate。

我的想法已经用完了。并检查了网络搜索建议的所有内容。任何建议表示赞赏。如果有任何具体要求,我可以发布代码

感谢您的帮助

经过进一步的测试,我发现 MKMapView 如果 iDevice 正在移动就会停止响应,并且一旦停止就会开始响应。

【问题讨论】:

“IB 中未选中视图的用户交互” - 哇哇哇。如果未选中视图的用户交互,则您也不能与其子视图交互。这应该选中,而不是未选中。地图视图应该从不是交互式的;事实上,它让我觉得你有一个额外的地图视图或其他东西。 选中或未选中。行为是相同的。我两种方式都试过了。我在一次网络搜索中读到的一件事表明,正在检查的视图推翻了 WebView。 好的,我发现并修复了更新后的问题:问题是我正在做所有的工作来生成注释,包括在 didUpdateUserLocation 方法中的区域。这导致 MKMapView 不断更新并阻止对地图或图钉的任何访问。这就是为什么它没有在 sim 中失败,也没有在设备连接到调试器时失败。解决方法是将所有代码移至 viewDidAppear 方法,现在无论设备是否移动,地图视图都只加载一次。 非常好!您应该将此作为答案发布,因为它可能对其他人有所帮助。 【参考方案1】:

我发现并修复了更新后的问题:问题是我正在做所有的工作来生成注释,包括didUpdateUserLocation 方法中的区域。这导致MKMapView 不断更新并阻止对地图或图钉的任何访问。这就是为什么它没有在 sim 中失败,也没有在设备连接到调试器时失败。解决方法是将所有代码移动到viewDidAppear: 方法,现在无论设备是否移动,地图视图都只加载一次。

【讨论】:

以上是关于MKMapView 在 iDevice 上停止响应的主要内容,如果未能解决你的问题,请参考以下文章

MKMapView 在滚动到底部并触发控制中心后停止滚动

当用户移动地图时,停止 MKMapView 移动到用户的当前位置

MapKit (MKMapView):zPosition 在 iOS11 上不再工作

将 MkMapView 移动到 TableViewCell 后,SetRegion 停止工作

MKMapView 和响应者链

UITableView:停止自动滚动超出所选位置