Currently, we use a single gesture recognizer our chart panning movement. As you say, at the moment, it will always swallow gestures, unless you turn off chart panning completely.
Our chart's gesture recognizers are all on the chart canvas' overlay, and we have a single pan gesture recognizer on our chart that handles the chart panning. If we set a delegate on this gesture recognizer, we can tell the gesture recognizer not to begin unless the horizontal movement is greater than the vertical movement.
So, to set the delegate on your chart's pan gesture recognizer you should do the following:
for (int x=0; x<_line.canvas.overlay.gestureRecognizers.count; x++)
UIGestureRecognizer *r = _line.canvas.overlay.gestureRecognizers[x];
if ([r isKindOfClass:[UIPanGestureRecognizer class]])
r.delegate = self; // Or any delegate you desire.
Now you can implement the -gestureRecognizerShouldBegin: delegate method and return NO if the gesture is a vertical pan. This will cause the gesture to propagate through to your scroll view.