滚动顶部的 UITableview 时,隐藏的 MKMapView 以某种方式接收触摸

Hidden MKMapView is somehow receiving touches when scrolling UITableview that is on top

我有一个 UIViewController,它使用 segmentedControlMKMapViewUITableView 控制器之间切换。地图显示了一些位置,然后切换到列表将以列表形式显示这些位置。

当切换 segmentedControl 时,它会显示相应的视图并隐藏另一个。

我遇到的一个非常奇怪的问题是,当显示 tableView 并向下滚动时,它有时会停止滚动,我可以上下滑动手指而 tableView 不会移动.然而,我随后切换到地图,它已经移动到另一个位置。所以我意识到,当滚动我隐藏的 mapView 时,不知何故收到了这些触摸。

这怎么可能?有什么办法可以防止这种情况发生吗?

您通过将 hidden 属性 设置为 1 来隐藏视图,对吗? iOS 也将 alpha 值低于 0.02 的视图视为隐藏视图。如果您正确地将其设置为隐藏,则不会绘制视图并且不应接收任何触摸事件 - 您确定这里没有其他东西发挥作用吗?

您是否覆盖了 MKMapViewtouchesBegan 方法以查看地图视图在隐藏时是否确实接收到触摸?

也许尝试将 hidden 设置为 1 将要隐藏的视图的 alpha 属性 设置为 0。如果问题仍然存在,则肯定有其他原因,因为隐藏视图根本没有绘制到屏幕上,因此系统没有转发任何触摸事件。

我明白了。问题是自定义标注。当它在地图上打开时,我将地图切换为隐藏,并显示 tableView,不知何故标注仍在接收触摸,然后它会滚动地图。

在地图的同时隐藏标注解决了问题。