To answer your second question, add the following category for SChartCanvasOverlay:
@interface SChartCanvasOverlay (CrosshairDuration)
- (void) changeLongPressDelay:(CFTimeInterval)time;
@implementation SChartCanvasOverlay (LongPress)
- (void) changeLongPressDelay:(CFTimeInterval)time
This exposes the long press gesture recognizer, and sets the minimum press duration. Now simply call changeLongPressDelay: on your canvas overlay and set the delay to 0. Bear in mind that once you do this you won't be able to dismiss the crosshair with a tap, so if you want it to disappear you'll have to remove it programatically:
It is worth bearing in mind, that this is an internal implementation detail and it is not actually something we expose on our API, thus it might break in the future. Thought if it does, we'll have probably added a way to do this onto our API.