gpt4 book ai didi

swift - 在上一 Action 结束之前点击手势触发

转载 作者:行者123 更新时间:2023-11-30 11:49:44 28 4
gpt4 key购买 nike

我设置了点击手势来完成如下操作:

func setupGestures() {
let singleTap = UITapGestureRecognizer(target: self, action: #selector(handleSingleTap))
singleTap.numberOfTapsRequired = 1
sceneView.addGestureRecognizer(singleTap)
}

@objc func handleSingleTap(_ sender: UITapGestureRecognizer) {
if sender.state == UIGestureRecognizerState.ended {
jumpUp()
}
}

func jumpUp() {
if let action = jumpAction {
addBlocks()
playerNode.runAction(action)
}
}

但是,我可以点击多次,并且我的对象会停留在空中(继续跳跃 Action ),因为它连续注册点击手势,而不是让它在注册另一次点击之前先完成。我该如何解决这个问题,以便一次只能发生一个点击手势?其他答案建议添加 sender.state == UIGestureRecognizerState.ished 但它没有起作用。

最佳答案

通过将 sender 作为参数传递给 jumpUp() 函数并在其完成处理程序中添加 sender.isEnabled = true 来修复此问题:

@objc func handleSingleTap(_ sender: UITapGestureRecognizer) {
sender.isEnabled = false
jumpUp(sender)
}

func jumpUp(_ sender: UITapGestureRecognizer) {
if let action = jumpAction {
addBlocks()
playerNode.runAction(action, completionHandler: {
sender.isEnabled = true
})
}
}

关于swift - 在上一 Action 结束之前点击手势触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465632/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com