如果用户在调用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 ;.我认为可能有一个复杂的解决方案,这是我的专长。