在CorePlot中触摸plotSymbol

时间:2010-11-18 13:00:00

标签: objective-c core-plot

当用户点击(或触摸)使用Core Plot创建的mye图上的plotSymbol时,我正在尝试运行一些代码。

这不适用于scatterPlot:

-(void)scatterPlot:(CPScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:    (NSUInteger)index
{
    NSLog(@"plotSymbolWasSelectedAtRecordIndex %d", index); 
}

但是当我使用barPlot时,这很有效:

-(void)barPlot:(CPBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index
{
    NSLog(@"barWasSelectedAtRecordIndex %d", index);
}

当用户点击或触摸我的scatterPlot时,我尝试捕获的内容是什么?

3 个答案:

答案 0 :(得分:14)

您需要在散点图上设置plotSymbolMarginForHitDetection。您应该将其设置为与绘图符号的大小相匹配,或者如果您需要更大的目标点击,则应稍大一些。

答案 1 :(得分:9)

另外,不要忘记将CPScatterPlot的委托设置为指向您的对象,否则它将不会被调用。

答案 2 :(得分:1)

如果你是在初始化时在CPTGraphHostingView的子类中设置你的东西(比如来自xib的initWithCoder),你的hostedGraph属性可能会被Core Plot破坏(至少从1.3开始),所以点击处理会短路。

https://code.google.com/p/core-plot/issues/detail?id=555

毋庸置疑,这件事发生在我身上:-)我的解决方法是在我的numberOfRecordsForPlot中设置hostedGraph,如果它尚未设置的话。