I found a very much related thread:
Propagate gesture events to containing controller (ShinobiCharts)
I see that Jan Akerman posted this work-around if your chart has no scrolling at all:
chart.gesturePanType = SChartGesturePanTypeNone;
However, this does not help me with my scenario of I want horizontal pan gestures to be handled by the chart, and vertical pan gestures to be handled by the parent (table/scrollview).
It’s not clear to me if a fix for this is being considered, given one of Jan’s responses.
Your correct about the chart swallowing the gestures. It isn’t possible to have the chart responding to panning gestures and to also have your scroll view to receive those gestures, it doesn’t really make sense from a usability point of view. This is similar to how a scroll view nested within a scrollview would work.
Jay’s response does seem like it’d be the trick to solving this issue in Shinobi’s codebase. That is, have it pass on horizontal and/or vertical gestures based on which axis (ss) have enablePanningGesture set.
Actually it is possible in iOS to have a pan gesture recognizer in an inner view (the chart) and still work for the outer-view (the scroll view) - only if the inner one is implemented correctly.
So shinobi guys - here’s how to do it…
- Set a UIGestureRecognizerDelegate for the pan GR and implement this:
CGPoint trans = [panGR translationInView:self.view];
CGPoint startPos = CGPointSubtract([panGR locationInView:self.view], trans);
// The GR is ready to start, but it is confirming with you first -
// There are situations that you should return NO:
// - If the start-point not inside an interactive area (e.g. the donut part on a donut chart)
// - If the chart is already at its limit in the direction of panning (see trans)
Is a fix for this being considered?