user24986
0
Q:

how to find circle point in line chart swift 4 site:stackoverflow.com

-(void)chartValueSelected:(ChartViewBase *)chartView entry:(ChartDataEntry *)entry dataSetIndex:(NSInteger)dataSetIndex highlight:(ChartHighlight *)highlight{
//-----------------------------------------------------getting recognizer value

UIGestureRecognizer *recognisedGesture = [chartView.gestureRecognizers objectAtIndex:0];
CGPoint poinOfTouch =[recognisedGesture locationInView:chartView];

CGPoint poinOfMarker =[chartView getMarkerPositionWithEntry:entry highlight:highlight];

if (check if the chartview is BarChartView and if true) {
    //-----------------------------------------------------If you want to detect touch/tap only on barchartview's bars

    if (poinOfTouch.y > poinOfMarker.y) {
        NSLog(@"within the bar area!");
    }
    else{
        NSLog(@"Outside the bar area!");
    }
}
else
{
    //-----------------------------------------------------If you want to detect touch/tap only on linechartView's markers


        //-----------------------------------------------------creating two arrays of x and y points(possible nearby points of touch location)

        NSMutableArray *containingXValue = [[NSMutableArray alloc]init];
        NSMutableArray *containingYValue = [[NSMutableArray alloc]init];


        for (int i =0 ; i<5; i++) {
            int roundedX = (poinOfMarker.x + 0.5);


            int sumXValuesPositive = roundedX+i;
            [containingXValue addObject:[NSNumber numberWithInt:sumXValuesPositive]];

            int sumXValuesNegative = roundedX-i;
            [containingXValue addObject:[NSNumber numberWithInt:sumXValuesNegative]];


            int roundedY = (poinOfMarker.y + 0.5);


            int sumYValuesPositive = roundedY+i;
            [containingYValue addObject:[NSNumber numberWithInt:sumYValuesPositive]];


            int sumYValuesNegative = roundedY-i;
            [containingYValue addObject:[NSNumber numberWithInt:sumYValuesNegative]];
        }

        //-----------------------------------------------------------------------------------------------------------------------------------------

        int roundXPointTOuched = (poinOf.x + 0.5);
        int roundYPointTOuched = (poinOf.y + 0.5);
        //-----------------------------------------------------check if touchpoint exists in the arrays of possible points

        if ([containingXValue containsObject:[NSNumber numberWithInt:roundXPointTOuched]] && [containingYValue containsObject:[NSNumber numberWithInt:roundYPointTOuched]])
        {
            // continue, the click is on marker!!!!
        }
        else
        {
            // stop, the click is not on marker!!!!

        }
        //-----------------------------------------------------------------------------------------------------------------------------------------
}

}
0

New to Communities?

Join the community