UIPanGestureRecognizer 与 UIPinchGestureRecognizer 的超级视图冲突

UIPanGestureRecognizer conflicts with UIPinchGestureRecognizer's superview

我有一个带有子视图的 UIScrollView 实例,它有自己的 UIPanGestureRecognizer,用于在滚动视图内移动子视图。我希望滚动视图的捏合缩放功能优先于平移手势。然而,情况并非如此:当开始用一根手指在我的子视图上捏合时,它会平移。

到目前为止我尝试了什么:

我的理解是,当从子视图开始捏合时,滚动视图和子视图都只接收一次触摸,这就是为什么在第二种情况下捏合手势识别器甚至不会失败,因为它不会甚至开始处理事件。

那么,关于如何实现这一点有什么想法吗?

一种方法是允许与 scrollView.pinchGestureRecognizer 同时交互,然后如果 scrollView.pinchGestureRecognizer 实际上正在缩放,则取消 panGestureRecognizer。我知道如何取消它们的唯一方法是 disable/enable.

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

    if (gestureRecognizer == panGestureRecognizer){
        if (otherGestureRecognizer == scrollView.panGestureRecognizer) {
            return 0;
        }
        else if(otherGestureRecognizer == scrollView.pinchGestureRecognizer){
            if (scrollView.pinchGestureRecognizer.scale != 1) {
                gestureRecognizer.enabled = 0;
                gestureRecognizer.enabled = 1;
            }
        }
    }
    return 1;
}