因此,我正在制作一个简单的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
据我所知,您正在将所有手势添加到self.view
。如果您要向视图组件中添加每个手势,那么您甚至不必费心尝试确保同时性。