Ios UIgestureRecognitor识别订单问题

Ios UIgestureRecognitor识别订单问题,ios,uikit,uigesturerecognizer,Ios,Uikit,Uigesturerecognizer,我有一个红色视图和一个绿色视图(绿色视图是红色视图的一个子视图),并且我在每个视图中添加了一个手势识别器 两个GrestureRecogniter的应该同时识别,并返回YES 但是,当我点击绿色视图时,首先调用红色视图的手势委托方法shouldlogenerationsympollywith 因为我认为命中测试视图应该是绿色视图。因此,绿色视图的应该与同时识别,应该是第一个 iOS如何决定哪个grestureRecognizer应该首先重新认证 发布代码并打印日志: class GreenVi

我有一个红色视图和一个绿色视图(绿色视图是红色视图的一个子视图),并且我在每个视图中添加了一个手势识别器

两个GrestureRecogniter的
应该同时识别,并返回YES

但是,当我点击绿色视图时,首先调用红色视图的手势委托方法
shouldlogenerationsympollywith

因为我认为命中测试视图应该是绿色视图。因此,绿色视图的
应该与
同时识别,应该是第一个

iOS如何决定哪个grestureRecognizer应该首先重新认证

发布代码并打印日志:

class GreenView: UIView,UIGestureRecognizerDelegate{
    override func awakeFromNib() {
        let gesture = UITapGestureRecognizer(target: self, action: #selector(greenTap))
        gesture.delegate = self
        self.addGestureRecognizer(gesture)
    }
    
    @objc func greenTap(){
        print("greenTap")
    }
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
       print("greenTap shouldRecognizeSimultaneouslyWith")

        return true
    }
    
    override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
                print("green gestureRecognizerShouldBegin")
        return super.gestureRecognizerShouldBegin(gestureRecognizer)
    }
}


class RedView: UIView,UIGestureRecognizerDelegate{
    override func awakeFromNib() {
        let gesture = UITapGestureRecognizer(target: self, action: #selector(redTap))
        gesture.delegate = self
        self.addGestureRecognizer(gesture)
    }
    
    @objc func redTap(){
        print("redTap")
    }
    
    override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
                print("redTap gestureRecognizerShouldBegin")
        return super.gestureRecognizerShouldBegin(gestureRecognizer)
    }
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
       print("redTap shouldRecognizeSimultaneouslyWith")

        return true
    }
}
这些指纹是:


我们可以看到,在绿色视图(子视图)的方法不将绿色视图添加为红色视图的子视图之前,应该同时识别红色视图(超级视图)并调用action方法。只需将绿色视图添加到其上方的红色视图之外,并将约束置于红色视图的中心即可

应为这两个视图启用用户交互。因此,当点击绿色视图时,它肯定会调用绿色视图的方法。请发布您尝试过的代码。谢谢@Mahendra,我已经添加了代码和日志,您可以看到,在绿色视图(子视图)的方法hanks之前,redview(superview)的应该同时识别和操作方法被调用,但事实上,我的目的是想弄清楚是什么让这种奇怪的呼叫顺序发生?我实际上需要在红色和绿色视图中同时识别should。
green gestureRecognizerShouldBegin
redTap gestureRecognizerShouldBegin
green gestureRecognizerShouldBegin
redTap shouldRecognizeSimultaneouslyWith
greenTap shouldRecognizeSimultaneouslyWith
redTap
greenTap