GestureRecognizer


#1
class MainViewController: UIViewController {

        @IBOutlet weak var chartView: ChartView!
        
        lazy var tapGestureRecognizer = { UITapGestureRecognizer(target: self, action: #selector(handleGesture)) }()
        lazy var panGestureRecognizer = { UIPanGestureRecognizer(target: self, action: #selector(handleGesture)) }()
        lazy var pinchGestureRecognizer = { UIPinchGestureRecognizer(target: self, action: #selector(handleGesture)) }()

    @objc func handleGesture(_ sender: GestureRecognizer) {
            print(sender.location(in: self.view), sender.state.rawValue)
            
            chartView.gestureRecognizer = sender.self
            chartView.setNeedsDisplay(view.bounds)
        }

    override func viewDidLoad() {
            super.viewDidLoad()

            chartView.addGestureRecognizer(tapGestureRecognizer)
            chartView.addGestureRecognizer(panGestureRecognizer)
            chartView.addGestureRecognizer(pinchGestureRecognizer)
    }

    class ChartView: UIView {

    var gestureRecognizer: GestureRecognizer!

    override func draw(_ rect: CGRect) {
            
            if gestureRecognizer != nil { 
print(gestureRecognizer.location(in: self), gestureRecognizer.state.rawValue)
    }
            
    }
    }

Добрый день. Привел выше выдержку из кода. Не пойму - почему в handleGesture в принте отображаются правильные координаты нажатия (tap), но если далее передавать chartView.gestureRecognizer = sender.self и печатать из draw функции, то получаю всегда одни и те же неправильные координаты? Как это исправить, тк все что связано с рисованием необходимо реализовать в draw?