菜鸟教程小白 发表于 2022-12-12 14:48:52

ios - 解决两个平移手势识别器之间的冲突


                                            <p><p>我有以下层次结构:</p>

<ul>
<li>查看
<ul>
<li> subview </li>
</ul></li>
</ul>

<p>每个 View 都分配了 <code>UIPanGestureRecognizer</code>。外部平移手势识别器只对垂直平移感兴趣,所以我为此实现了委托(delegate)方法:</p>

<pre><code>- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
    CGPoint velocity = ;
    return fabs(velocity.y) &gt; fabs(velocity.x);
}
</code></pre>

<p>但是,Subview 的平移手势在识别中始终优先。有没有办法让外部平移手势识别器先识别,如果失败, subview 的平移手势可以接管?</p>

<p>我尝试了同时识别并且它可以工作,但是两个识别器都开始平移:</p>

<pre><code>- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer

    shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
      return YES;
    }
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>从 iOS 7 开始,UIGestureRecognizerDelegate 协议(protocol)已经声明了两个代理方法来满足你的需要,你可以使用
|<em>gestureRecognizer:shouldRequireFailureOfGestureRecognizer:</em>|
或者
|<em>gestureRecognizerShouldBegin:shouldBeRequiredToFailByGestureRecognizer:</em>|但相反。</p>

<p>以下片段是我的 UIPanGestureRecognizer 委托(delegate)实现:</p>

<pre><code>- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
    CGPoint velocity = ;
    return fabs(velocity.y) &gt; fabs(velocity.x);
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    if (otherGestureRecognizer == panGestureOfSubView) {
      return YES;
    }

    return NO;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 解决两个平移手势识别器之间的冲突,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29233465/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29233465/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 解决两个平移手势识别器之间的冲突