同时使用委托,但一个手势仍会覆盖其他手势

问题描述 投票:0回答:1

因此,我正在制作一个简单的2D游戏,我分别制作了两个用于移动的按钮和一个用于瞄准的操纵杆。因此,我做了一个longPressGesture(最小持续时间= 0)来检测它何时触地,还有两个平移手势分别用于按钮和操纵杆。对于按钮,我选择“平移”是因为我想在按钮上滑动并使它们起作用,而不是仅仅一次又一次地按。

这是我创建手势的地方。

func createGestures() {

        var gestureArray = [UIGestureRecognizer]()
        //tapDownGesture
        let tapDownGesture = UILongPressGestureRecognizer(target: self, action: #selector(tapDownFunc(sender:)))
        tapDownGesture.minimumPressDuration = 0
        tapDownGesture.name = "longGesture"

        //tapUpGesture
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapFunc(sender:)))

        //panGesture
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panFunc(sender:)))
        let secondPanGesture = UIPanGestureRecognizer(target: self, action: #selector(panFunc(sender:)))
        secondPanGesture.name = "panGesture"
        panGesture.name = "panGesture"


        tapDownGesture.delegate = self
        secondPanGesture.delegate = self
        panGesture.delegate = self
        tapGesture.delegate = self

        //gestureArray.append(tapGesture)
        gestureArray.append(secondPanGesture)
        gestureArray.append(panGesture)
        gestureArray.append(tapDownGesture)

        for i in gestureArray {
            self.view.addGestureRecognizer(i)
        }

    }

有代表

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
}

我一直在寻找解决方案,但是我只能发现我需要使用即时通讯代理,而即时代理已经在使用。

因此使用该代码,我只能在不按下按钮的情况下使用操纵杆。当按下按钮时,我无法开始使用panGesture;如果已经使用过panGesture,它将停止并在释放按钮后继续使用。

此外,没有代码可以使其他手势或类似操作失败。按钮是UIButton,操纵杆是SKNode

ios swift sprite-kit uigesturerecognizer
1个回答
0
投票

据我所知,您正在将所有手势添加到self.view。如果您要向视图组件中添加每个手势,那么您甚至不必费心尝试确保同时性。

© www.soinside.com 2019 - 2024. All rights reserved.