CorePlot情节测试

时间:2011-10-18 11:59:56

标签: testing core-plot hit

我对CorePlot有疑问。我的问题是: 我画了一条曲线。下一个任务是:曲线选择。 我添加了处理程序:

但这不起作用。 有任何想法吗? 感谢。

- (BOOL)npvCurveContainPoint:(CGPoint)point
{
    if ([[graph allPlots] count] == 0) {
         return NO;
    }
    CPTPlot* plot = [graph plotAtIndex:0];
    BOOL xContains = [[plot plotRangeForCoordinate:CPTCoordinateX] containsDouble:point.x];
    BOOL yContains = [[plot plotRangeForCoordinate:CPTCoordinateY] containsDouble:point.y];
    if (xContains && yContains) {
        return YES;
    }
    return NO;
}

#pragma mark - Plot Space Delegate Methods
- (BOOL)plotSpace:(CPTPlotSpace*)space shouldHandlePointingDeviceDownEvent:(id)event atPoint:(CGPoint)point
{
    CGPoint pointInPlotArea = [graph convertPoint:point fromLayer:graph.plotAreaFrame];
    if ([self npvCurveContainPoint:pointInPlotArea]) {
        NSLog(@"Curve is selected!!!");
    }
    return NO;
}

1 个答案:

答案 0 :(得分:0)

我不确定你要测试的是什么,但是你正在混合坐标系。传递给绘图空间委托方法的点位于绘图区域图层的视图坐标中。您将其转换为整个图层的坐标系,然后根据绘图空间数据坐标测试该点。

绘图空间定义了屏幕上数据和绘图区域之间的映射。 location的{​​{1}}对应于绘图区域的左手边缘,其终点(xRange + location)对应于右手边缘。类似地,length的{​​{1}}对应于绘图区域的下边缘,其终点对应于上边缘。请注意,绘图范围可以具有负长度,这意味着终点的数据坐标可以小于起始位置。