我正在构建的应用程序有一个全屏MKMapView
,其上放置了另一个UIView
子类,全屏也完全透明。我希望UIView
子类能够处理单点触摸手势,例如点击和单指拖动,并忽略其他任何内容。这将允许MKMapView
使用其他方式进行交互,尤其是通过禁用3D功能来平移/滚动两个手指。
我的问题是MKMapView不使用touchesXXX:withEvent:
方法进行用户交互。因此,我无法在视图上检测这些方法中的触摸计数并转发到地图。同样,hitTest:withEvent:
方法不能用于确定哪个视图处理触摸,因为UIEvent
对象返回一组空触摸。
我考虑让所有触摸都通过视图向前移动并使用手势识别器来处理事件,但我真的需要在叠加视图上单击触摸/拖动才能对地图视图产生影响。
有没有办法根据触摸次数完成此过滤?或者一种在地图视图上禁用单点触控手势的方法?
答案 0 :(得分:1)
解决方案实际上非常简单。
MKMapView
上,将scrollEnabled
属性设置为NO
(IB中的“允许滚动”复选框)手势识别器允许您获取手势,并将scrollEnabled
设置为NO
可防止MapView吞下手势。
示例项目:https://github.com/Linux-cpp-lisp/sample-no-gesture-mapview