菜鸟教程小白 发表于 2022-12-12 17:09:50

ios - 将触摸事件转发到另一个被接收事件的 View 部分覆盖的 View


                                            <p><p>我到处寻找这个问题的解决方案,但我的情况似乎有所不同。</p>

<p>我有两个 View ,具体来说,一个 GMSMapView(来自 google maps api 的 mapView )占据整个屏幕,另一个 View 位于 map 顶部(不是它的 subview ,而是部分覆盖它)。发生的情况是,当我用一根手指从第二个 View 顶部开始捏,另一根手指在 map 顶部捏时, map 没有得到手势。由于第二个 View 有大的透明区域,我还希望如果我用一根手指在这些区域上平移, map 将获得手势(移动)但保持按钮(非 mapView 的 subview )可点击。</p>

<p>我已经尝试在非 mapView 的 View 类文件中保留对 mapView 的引用并实现了 hitTest 方法,但 map 仍然没有得到任何接触......非常感谢</p>

<pre><code>- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView *hitView = ;

    // 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&#39;s buttons):
    return hitView;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在您的第二个 View 中覆盖 pointInside 方法,如果该点出现在您的 View 的某些可点击部分(如按钮等 - 检查该点是否在按钮框架内),则返回 YES,否则返回 NO。<br/>
因此,如果用户点击第二个 View ,并且如果您在 pointInside 中返回 NO,则 mapview 的 pointInside 将被调用,因此它将接收事件。如果返回 YES,mapView 的 poinInside 将不会被调用,因此 mapView 不会收到事件。<br/>
希望这会有所帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将触摸事件转发到另一个被接收事件的 View 部分覆盖的 View ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20552129/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20552129/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将触摸事件转发到另一个被接收事件的 View 部分覆盖的 View