我有一个非常简单的图表,我想启用触控,我有 第一部分工作:
plotSpace.delegate = self;
和方法:
-(BOOL)plotSpace:(CPPlotSpace *)space
shouldHandlePointingDeviceDownEvent:(id)event atPoint:(CGPoint)point
{
NSLog(@"touched at: x: %f y: %f", point.x, point.y);
}
如何将点“点”转换为图表的绘图空间?
我可以看到方法,但我不确定如何使用它们,doco, 虽然很大,但并不能很好地描述它们:)
非常感谢 马克
答案 0 :(得分:6)
这就是我正在使用的:
NSDecimal plotPoint[2];
CPXYPlotSpace *xySpace = (CPXYPlotSpace *)space;
[xySpace plotPoint:plotPoint forPlotAreaViewPoint:point];
NSlog(@"plotPoint = %@, %@",
[[NSDecimalNumber decimalNumberWithDecimal:plotPoint[CPCoordinateX]] intValue],
[[NSDecimalNumber decimalNumberWithDecimal:plotPoint[CPCoordinateY]] doubleValue]);
我猜你可以将CPXYPlotSpace更改为CPPlotSpace,在我的绘图中,绘图空间是CPXYPlotSpace,因此plotPoint:forPlotAreaViewPoint方法接受 2 NSDecimal值的数组。
同样在我的情节中,x值都是整数,y值都是双精度。
答案 1 :(得分:2)
我不得不承认,我忘记了这个问题,感谢Steve的回复。
我确实也解决了,这是我的实现(即时扩展CPXYGraph
)
-(BOOL)plotSpace:(CPPlotSpace *)space shouldHandlePointingDeviceDownEvent:(id)event atPoint:(CGPoint)point {
CPScatterPlot *plot = (CPScatterPlot*)[[self allPlots] objectAtIndex: 0];
CGPoint pointInPlotArea = [plot convertPoint:point toLayer:plot];
if ([plot containsPoint:pointInPlotArea]) {
CPXYPlotSpace *plotSpace = (CPXYPlotSpace*)[self defaultPlotSpace];
NSDecimal touchDataPoint[2];
[plotSpace plotPoint:touchDataPoint forPlotAreaViewPoint:pointInPlotArea];
}
}
然后,touchDataPoint包含用户触摸的坐标。