菜鸟教程小白 发表于 2022-12-12 21:03:28

ios - 可以将触摸事件转发到 MKMapView 吗?


                                            <p><p>我想将 mapView 显示为永久背景,而其他 View 显示在其顶部(我将顶部 View 的 alpha 设置为 0.9 之类的值,以便 map 在下方隐约可见)和在某些时候 map 会显示出来。</p>

<p>我有一个容器 View ,它位于 mapView 的顶部,我想知道是否可以将容器 View 边界内发生的触摸事件传递给 mapView ,以便可以滚动等。这是一个显示架构示例的草图项目。 <img src="/image/CfSQB.png" alt="enter image description here"/> </p>

<p> <img src="/image/iEI25.png" alt="enter image description here"/> </p>

<p>(容器 View 位于 mapView 的下半部分之上,容器 View 和包含的 ViewController 的 View 的 alpha 均为 0,因此对用户而言, map 在整个屏幕上都是可见的)。</p>

<p>将在包含 ViewController 的 View 或 subviewController 中发生的触摸事件转发到 map 背景 ViewController 很容易。 </p>

<p>如果我像这样将触摸事件传递给 mapView </p>

<pre><code>- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    MapBackgroundViewController *parent = (MapBackgroundViewController *) self.parentViewController;
    ;
}
</code></pre>

<p>然后什么都没有发生。</p>

<p>有没有办法将触摸事件传递给 mapView 以使其滚动等?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>是的,你可以这样做。</p>

<p>我所做的是子类 <code>UIView</code> 并覆盖 <code>hitTest:withEvent:</code> 以便通过触摸,除非触摸 subview 。像这样的:</p>

<pre><code>@implementation PassthroughView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView *view = ;
    return view == self ? nil : view;
}

@end
</code></pre>

<p>然后我将这个类分配给我的容器 View 和包含的 ViewController 在 IB 中的主视图。因此,您仍然可以与包含的 ViewController 的内容进行交互,但对容器本身的触摸会传递到 map 。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 可以将触摸事件转发到 MKMapView 吗?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22736308/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22736308/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 可以将触摸事件转发到 MKMapView 吗?