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?