From 07686926ac8a7b572097946c6c5a248df812ceed Mon Sep 17 00:00:00 2001 From: Roei Baruch Date: Thu, 9 Mar 2023 13:01:21 +0200 Subject: [PATCH 1/3] feature(long-tap-gesture-recognizer-ability): Added longTapGestureRecognized --- .../Charts/Charts/BarLineChartViewBase.swift | 28 +++++++++++++++++++ Source/Charts/Utils/Platform+Gestures.swift | 1 + 2 files changed, 29 insertions(+) diff --git a/Source/Charts/Charts/BarLineChartViewBase.swift b/Source/Charts/Charts/BarLineChartViewBase.swift index 343cd6832f..c082e20354 100644 --- a/Source/Charts/Charts/BarLineChartViewBase.swift +++ b/Source/Charts/Charts/BarLineChartViewBase.swift @@ -87,6 +87,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// **default**: An instance of XAxisRenderer @objc open lazy var xAxisRenderer = XAxisRenderer(viewPortHandler: viewPortHandler, axis: xAxis, transformer: _leftAxisTransformer) + internal var _longTapGestureRecognizer: NSUILongGestureRecognizer! internal var _tapGestureRecognizer: NSUITapGestureRecognizer! internal var _doubleTapGestureRecognizer: NSUITapGestureRecognizer! #if !os(tvOS) @@ -121,6 +122,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD self.highlighter = ChartHighlighter(chart: self) + _longTapGestureRecognizer = NSUILongGestureRecognizer(target: self, action: #selector(longTapGestureRecognized(_:))) _tapGestureRecognizer = NSUITapGestureRecognizer(target: self, action: #selector(tapGestureRecognized(_:))) _doubleTapGestureRecognizer = NSUITapGestureRecognizer(target: self, action: #selector(doubleTapGestureRecognized(_:))) _doubleTapGestureRecognizer.nsuiNumberOfTapsRequired = 2 @@ -529,6 +531,32 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD private var _decelerationDisplayLink: NSUIDisplayLink! private var _decelerationVelocity = CGPoint() + @objc private func longTapGestureRecognized(_ recognizer: NSUILongGestureRecognizer) + { + if data === nil + { + return + } + + if recognizer.state == NSUIGestureRecognizerState.began + { + if !isHighLightPerTapEnabled { return } + + let h = getHighlightByTouchPoint(recognizer.location(in: self)) + + if h === nil || h == self.lastHighlighted + { + lastHighlighted = nil + highlightValue(nil, callDelegate: true) + } + else + { + lastHighlighted = h + highlightValue(h, callDelegate: true) + } + } + } + @objc private func tapGestureRecognized(_ recognizer: NSUITapGestureRecognizer) { if data === nil diff --git a/Source/Charts/Utils/Platform+Gestures.swift b/Source/Charts/Utils/Platform+Gestures.swift index e22e168876..acffb2b90a 100644 --- a/Source/Charts/Utils/Platform+Gestures.swift +++ b/Source/Charts/Utils/Platform+Gestures.swift @@ -18,6 +18,7 @@ public typealias NSUIGestureRecognizerState = UIGestureRecognizer.State public typealias NSUIGestureRecognizerDelegate = UIGestureRecognizerDelegate public typealias NSUITapGestureRecognizer = UITapGestureRecognizer public typealias NSUIPanGestureRecognizer = UIPanGestureRecognizer +public typealias NSUILongGestureRecognizer = UILongPressGestureRecognizer extension NSUITapGestureRecognizer { From 810f7e39aa4dcd0deb36a8e9e7b10f445a4335f9 Mon Sep 17 00:00:00 2001 From: Roei Baruch Date: Thu, 9 Mar 2023 14:57:31 +0200 Subject: [PATCH 2/3] feature(long-tap-gesture-recognizer-ability): Added self.addGestureRecognizer --- Source/Charts/Charts/BarLineChartViewBase.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Charts/Charts/BarLineChartViewBase.swift b/Source/Charts/Charts/BarLineChartViewBase.swift index c082e20354..959992cc4f 100644 --- a/Source/Charts/Charts/BarLineChartViewBase.swift +++ b/Source/Charts/Charts/BarLineChartViewBase.swift @@ -130,6 +130,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD _panGestureRecognizer.delegate = self + self.addGestureRecognizer(_longTapGestureRecognizer) self.addGestureRecognizer(_tapGestureRecognizer) self.addGestureRecognizer(_doubleTapGestureRecognizer) self.addGestureRecognizer(_panGestureRecognizer) From 079f1484ae2d830c236b247e569aa6d7576f4e1d Mon Sep 17 00:00:00 2001 From: Roei Baruch Date: Thu, 9 Mar 2023 15:38:10 +0200 Subject: [PATCH 3/3] feature(long-tap-gesture-recognizer-ability):Added horizontal capabilities --- Source/Charts/Charts/BarLineChartViewBase.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Source/Charts/Charts/BarLineChartViewBase.swift b/Source/Charts/Charts/BarLineChartViewBase.swift index 959992cc4f..803ea86f95 100644 --- a/Source/Charts/Charts/BarLineChartViewBase.swift +++ b/Source/Charts/Charts/BarLineChartViewBase.swift @@ -538,6 +538,19 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { return } + + if isHighlightPerDragEnabled + { + let h = getHighlightByTouchPoint(recognizer.location(in: self)) + + let lastHighlighted = self.lastHighlighted + + if h != lastHighlighted + { + self.lastHighlighted = h + self.highlightValue(h, callDelegate: true) + } + } if recognizer.state == NSUIGestureRecognizerState.began {