所以我的长按识别器设置如下:
@IBAction func p1s1scoreLongTouch(_ sender: AnyObject) {
p1s1currentscore -= 1
p1s1scoreoutlet.setTitle(String(p1s1currentscore), for: UIControlState.normal)
}
但是现在当你长按按钮时,它会将p1s1当前得分改为两点,一次是长按的持续时间,另一次是举手指。我该如何解决这个问题?
答案 0 :(得分:2)
您没有考虑到您的手势识别器动作处理程序可以(并且几乎肯定会)在单个手势的过程中多次调用的事实。您需要查看手势识别器的state
并决定是否要对此特定状态执行减量。 (手势识别器以sender
到达,但你只是忽略它 - 愚蠢。)
答案 1 :(得分:0)
感谢帮助人员。在学习之后我使用了错误的语法,我做了一些研究,我的更新代码看起来更像是
@IBAction func p1s1scoreLongTouch(_ sender: UILongPressGestureRecognizer) {
if sender.state == .began {
print("UIGestureRecognizerStateBegan")
p1s1currentscore -= 1
p1s1scoreoutlet.setTitle(String(p1s1currentscore), for: UIControlState.normal)
}
else if sender.state == .ended {
print("UIGestureRecognizerStateEnded")
}
}
仍然不确定这是否是正确的语法,但我知道它更正确,因为它有效。