滚动顶部的 UITableview 时,隐藏的 MKMapView 以某种方式接收触摸
Hidden MKMapView is somehow receiving touches when scrolling UITableview that is on top
我有一个 UIViewController
,它使用 segmentedControl
在 MKMapView
和 UITableView
控制器之间切换。地图显示了一些位置,然后切换到列表将以列表形式显示这些位置。
当切换 segmentedControl
时,它会显示相应的视图并隐藏另一个。
我遇到的一个非常奇怪的问题是,当显示 tableView
并向下滚动时,它有时会停止滚动,我可以上下滑动手指而 tableView
不会移动.然而,我随后切换到地图,它已经移动到另一个位置。所以我意识到,当滚动我隐藏的 mapView
时,不知何故收到了这些触摸。
这怎么可能?有什么办法可以防止这种情况发生吗?
您通过将 hidden
属性 设置为 1
来隐藏视图,对吗? iOS 也将 alpha 值低于 0.02 的视图视为隐藏视图。如果您正确地将其设置为隐藏,则不会绘制视图并且不应接收任何触摸事件 - 您确定这里没有其他东西发挥作用吗?
您是否覆盖了 MKMapView
的 touchesBegan
方法以查看地图视图在隐藏时是否确实接收到触摸?
也许尝试将 hidden
设置为 1
和 将要隐藏的视图的 alpha
属性 设置为 0
。如果问题仍然存在,则肯定有其他原因,因为隐藏视图根本没有绘制到屏幕上,因此系统没有转发任何触摸事件。
我明白了。问题是自定义标注。当它在地图上打开时,我将地图切换为隐藏,并显示 tableView
,不知何故标注仍在接收触摸,然后它会滚动地图。
在地图的同时隐藏标注解决了问题。
我有一个 UIViewController
,它使用 segmentedControl
在 MKMapView
和 UITableView
控制器之间切换。地图显示了一些位置,然后切换到列表将以列表形式显示这些位置。
当切换 segmentedControl
时,它会显示相应的视图并隐藏另一个。
我遇到的一个非常奇怪的问题是,当显示 tableView
并向下滚动时,它有时会停止滚动,我可以上下滑动手指而 tableView
不会移动.然而,我随后切换到地图,它已经移动到另一个位置。所以我意识到,当滚动我隐藏的 mapView
时,不知何故收到了这些触摸。
这怎么可能?有什么办法可以防止这种情况发生吗?
您通过将 hidden
属性 设置为 1
来隐藏视图,对吗? iOS 也将 alpha 值低于 0.02 的视图视为隐藏视图。如果您正确地将其设置为隐藏,则不会绘制视图并且不应接收任何触摸事件 - 您确定这里没有其他东西发挥作用吗?
您是否覆盖了 MKMapView
的 touchesBegan
方法以查看地图视图在隐藏时是否确实接收到触摸?
也许尝试将 hidden
设置为 1
和 将要隐藏的视图的 alpha
属性 设置为 0
。如果问题仍然存在,则肯定有其他原因,因为隐藏视图根本没有绘制到屏幕上,因此系统没有转发任何触摸事件。
我明白了。问题是自定义标注。当它在地图上打开时,我将地图切换为隐藏,并显示 tableView
,不知何故标注仍在接收触摸,然后它会滚动地图。
在地图的同时隐藏标注解决了问题。