核心情节1.0我的触摸注释将无法正常工作

时间:2012-09-12 18:14:47

标签: ios annotations core-plot

我已经在这方面工作了几天而且我很难过。我试图在核心图中创建一个图表,允许用户推送数据点并获取坐标。我制作了一个样本App,它只是制作一个线性图。我的问题是我无法使用触控功能。我参考了核心情节网站上的许多情节,但我无法让它在我的应用程序中运行。这就是我所做的;

在我的标题中,我创建了一个属性CPTPlotSpaceAnnotation *注释。我也用过,接口ViewController:UIViewController。

在我的实现中,我合成了注释。在我的ViewDidAppear方法中,我用CGPointMake创建了一个数据数组。

NSMutableArray *linearstuff = [NSMutableArray array];

for (int i = 0; i < 100; i ++)
{
    float y = (b * (l)) + c;
    [linearstuff addObject:[NSValue valueWithCGPoint:CGPointMake(l, y)]];
    l = l + inc;
}

self.data = linearstuff;
[self initPlot];

我的方法initPlot配置图表并有几个配置方法。所以在我调用configurePlots的方法中,我分配并初始化一个名为linearGraph的CPTScatterPlot。我也在该方法中使用了linearGraph.plotSymbolMarginForHitDetection。然后对于plotSymbolWasSelectedAtRecordIndex,我做了以下。

- (void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index
{
NSLog(@"touch");
CPTGraph *graph = self.hostView.hostedGraph;

if (_annotation)
{
    [graph.plotAreaFrame.plotArea removeAnnotation:_annotation];
    _annotation = nil;
}

CPTMutableTextStyle *annotationTextStyle = [CPTMutableTextStyle textStyle];
annotationTextStyle.color = [CPTColor whiteColor];
annotationTextStyle.fontSize = 16.0f;
annotationTextStyle.fontName = @"Helvetica-Bold";

NSValue *value = [self.data objectAtIndex:index];
CGPoint point = [value CGPointValue];
NSString *number1 = [NSString stringWithFormat:@"%.2f", point.x];
NSString *number2 = [NSString stringWithFormat:@"%.2f", point.y];

NSLog(@"x and y are, %.2f, %.2f", point.x, point.y);
NSLog(@"number1 and number2 are, %.2f, %.2f", point.x, point.y);

NSNumber *x = [NSNumber numberWithFloat:point.x];
NSNumber *y = [NSNumber numberWithFloat:point.y];

NSArray *anchorPoint = [NSArray arrayWithObjects: x, y, nil];

NSString *final = [number1 stringByAppendingString:number2];
NSLog(@"final is %@",final);


CPTTextLayer *textLayer = [[CPTTextLayer alloc] initWithText:final style:annotationTextStyle];
_annotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:graph.defaultPlotSpace anchorPlotPoint:anchorPoint];
_annotation.contentLayer = textLayer;
_annotation.displacement = CGPointMake(0.0f, 0.0f);
[graph.plotAreaFrame.plotArea addAnnotation:_annotation];
}

我试着按照我在核心情节网站上看到的内容。我拿了我的数组并得到了索引。我将这些值放在NSNumber中以为注释创建一个字符串。但是,它没有出现在图表上。有人知道我做错了什么吗?任何见解都会非常感激。我已经阅读了很多关于SO的核心情节问题,但找不到对我的情况有帮助的东西。提前谢谢。

1 个答案:

答案 0 :(得分:1)

对于任何关注此事的人。我首先要感谢Eric Skroch的所有帮助,AGAIN !!!!但我终于找到了我做错的事。我让viewController成为了剧情代表,然而,当我制作剧情时,我并没有这么说。我添加了linearGraph.delegate = self;现在调用plotSymbol ...方法!谢谢@Eric Skroch。