我到处寻找这个问题的解决方案,但我的情况似乎有所不同。
我有两个 View ,具体来说,一个 GMSMapView(来自 google maps api 的 map View )占据整个屏幕,另一个 View 位于 map 顶部(不是它的 subview ,而是部分覆盖它)。发生的情况是,当我用一根手指从第二个 View 顶部开始捏,另一根手指在 map 顶部捏时, map 没有得到手势。由于第二个 View 有大的透明区域,我还希望如果我用一根手指在这些区域上平移, map 将获得手势(移动)但保持按钮(非 map View 的 subview )可点击。
我已经尝试在非 map View 的 View 类文件中保留对 map View 的引用并实现了 hitTest 方法,但 map 仍然没有得到任何接触......非常感谢
- (UIView *)hitTestCGPoint)point withEventUIEvent *)event
{
UIView *hitView = [super hitTest:point withEvent:event];
// If the hitView is THIS view, return the map instead
if (hitView == self)
{
return self.targetView; //the map view
}
// Else return the hitView (as it could be one of this view's buttons):
return hitView;
}
在您的第二个 View 中覆盖 pointInside 方法,如果该点出现在您的 View 的某些可点击部分(如按钮等 - 检查该点是否在按钮框架内),则返回 YES,否则返回 NO。
因此,如果用户点击第二个 View ,并且如果您在 pointInside 中返回 NO,则 mapview 的 pointInside 将被调用,因此它将接收事件。如果返回 YES,mapView 的 poinInside 将不会被调用,因此 mapView 不会收到事件。
希望这会有所帮助。
关于ios - 将触摸事件转发到另一个被接收事件的 View 部分覆盖的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20552129/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |