检查用户是否仍在触摸屏幕而不是touchesMoved()

时间:2018-02-05 13:48:39

标签: ios uigesturerecognizer uipangesturerecognizer

如果用户在调用draw()之前将手指从屏幕上抬起,我正在寻找一种获取触摸的方法,以便在 draw()之前调用。这样,如果触摸结束,路径就不会被绘制出来。我很确定这是不可能的,但我想我只是想确认一下。

(下面的代码只是为了证明我的意思,我知道它不是绘图算法的好代码)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    haveTouchesEnded = false
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch = touches.first
    path.addLine(to: touch.location(in:self))
    setNeedsDisplay() //calls draw()
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    haveTouchesEnded = true
}

override func draw(_ rect: CGRect) {
    if haveTouchesEnded=false{
        path.stroke()
    else{
        //do nothing
    }
}

或者,我想以某种方式检查用户是否仍然在draw()方法中触摸屏幕。我尝试使用uipangesturerecognizer并在draw()方法中检查其状态,但是在调用draw()时它似乎没有更新,可能是因为touchesMoved仍在执行,所以状态仍然是&#34;变更&#34 ;.我认为可能有一个复杂的解决方案,这是我的专长。

0 个答案:

没有答案