(swift)将长按设置为 - = 1但现在数字下降两次

时间:2016-10-04 19:30:29

标签: ios swift

所以我的长按识别器设置如下:

    @IBAction func p1s1scoreLongTouch(_ sender: AnyObject) {
        p1s1currentscore -= 1
        p1s1scoreoutlet.setTitle(String(p1s1currentscore), for: UIControlState.normal)
    }

但是现在当你长按按钮时,它会将p1s1当前得分改为两点,一次是长按的持续时间,另一次是举手指。我该如何解决这个问题?

2 个答案:

答案 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")
        }

    }

仍然不确定这是否是正确的语法,但我知道它更正确,因为它有效。