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

ios - UITableView 在不应该的时候将触摸事件传递给 superview


                                            <p><p>在 <a href="http://www.cocoacontrols.com/platforms/ios/controls/gikanimatedcallout" rel="noreferrer noopener nofollow">GIKAnimatedCallout</a>示例代码、双击手势、两指点击手势、缩放手势和捏合手势都从 UITableView 传递到它下面的 MKMapView。我想阻止这种情况发生。 UITableView 内的触摸事件不应传递到 MKMapView。</p>

<p>我尝试为点击添加 UIGestureRecognizer,并将其设为空方法,但这些触摸事件仍会发送到 MKMapView 以及 UITableView。</p>

<p>通过调试器查看UITableView的superview层级,发现UITableView是MKMapView的后代。 </p>

<p>我真的不知道如何解决这个问题。任何指针表示赞赏。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果我理解正确,如果在 UITableView 上做出手势,您希望 MKMapView 根本不使用react(在示例中,myMKMapView 的 myTableView 属性是有问题的 UITableView)。如果是这样,你应该实现</p>

<pre><code> - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; </code></pre>

<p>在您的 MKMapView 子类中(如果您没有子类,请创建一个子类。在此示例中,我已将子类称为 myMKMapView)。首先让您的 MKMapView 子类 myMKMapView 符合 <code>UIGestureRecognizerDelegate</code> 协议(protocol)。
在 MKMapView 的 .h 文件中:</p>

<pre><code>@interface myMKMapView : MKMapView &lt;UIGestureRecognizerDelegate&gt;
</code></pre>

<p>完成后,进入 myMKMapView 的 .m 文件并按如下方式实现:</p>

<pre><code>- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    UIView *view = withEvent:nil];

    if () {
      return NO;
    }
    return YES;
}
</code></pre>

<p>这告诉 myMKMapView 如果在其 myTableView 属性上执行了一个手势,myMKMapView 应该忽略它。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UITableView 在不应该的时候将触摸事件传递给 superview,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11570160/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11570160/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UITableView 在不应该的时候将触摸事件传递给 superview