Диаграммы iOS: как реализовать распознавание касаний для метки LineChart - PullRequest
2 голосов
/ 12 февраля 2020

У меня есть широкий LineChart со многими записями. Я хочу, чтобы пользователь нажал (или, что лучше, longtap / 3D touch) на запись, чтобы показать модальную карту, где пользователь может редактировать ввод данных. Я попытался реализовать chartValueSelected, но проблема в том, что он работает, даже когда пользователь нажимает для прокрутки (то есть, не отпуская палец), а не так, как должна вести себя кнопка. Есть ли способ реализовать распознавание касаний для LineChart метки?

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Вы можете прикрепить свой собственный распознаватель жестов к LineChartView и использовать метод getHighlightByTouchPoint, чтобы получить информацию о выбранной точке.

override func viewDidLoad() {
    // ...
    let longTapRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(onLongTap))
    lineChartView.addGestureRecognizer(longTapRecognizer)
    // ...
}

@objc func onLongTap(recognizer: UILongPressGestureRecognizer) {
    if recognizer.state == .ended {
        let highlight = lineChartView.getHighlightByTouchPoint(recognizer.location(in: lineChartView))
        print("\(highlight)")
    }
}
1 голос
/ 12 февраля 2020

Похоже, что переопределение распознавателя жестов касания для диаграммы может работать. На этот вопрос есть ответы, основанные на том, кто искал подобное решение.

...