Согласно моим комментариям выше, я думаю, что в touchesMoved
есть логическая ошибка, и вам нужно изменить порядок кода, если вы пытаетесь нарисовать линию из трех точек, а затем позже проверить, что каждая точка находится в определеннойобласть просмотра.
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
swiped = true
currentPoint = touch.location(in: self)
drawShapeLayer(from: lastPoint, to: currentPoint)
lastPoint = currentPoint
linePoint = currentPoint
}
}
(также безопасно разверните касание, чтобы удалить необязательное и избежать сбоев в маловероятном сценарии, где touches.first равен нулю)