willChangePlotRangeTo:对Core Plot中的graphics没有影响

我有我的应用程序中运行的下面的代码来阻止Y轴在缩放和缩放过程中触摸或捏手势。 我已经指定了axisConstraints,就像globalXRange和Y.

-(CGPoint)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CGPoint)displacement{ return CGPointMake(displacement.x,0); } -(CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate{ if (coordinate == CPTCoordinateY) { newRange = ((CPTXYPlotSpace*)space).yRange; } NSLog(@"Plot changes %@", newRange); return newRange; } 

我的问题是,从日志,4-5情节变化logging在日志中,而第一次运行应用程序时,第一次显示页面? 代码似乎工作正常,只是我没有得到阴谋,再加上没有标签+蜱在Y.

 2013-11-10 17:30:52.259 MyApp[8953:a0b] Pinch changes <<CPTPlotRange: 0x8d96680> {0, 30158.4}> 2013-11-10 17:30:52.260 MyApp[8953:a0b] Pinch changes <<CPTPlotRange: 0x8d94e70> {0, 40}> 2013-11-10 17:30:52.260 MyApp[8953:a0b] Pinch changes <<CPTPlotRange: 0x8d94330> {0, 34.44}> 2013-11-10 17:30:52.268 MyApp[8953:a0b] Pinch changes <<CPTPlotRange: 0x8da6da0> {0, 30158}> 2013-11-10 17:30:52.268 MyApp[8953:a0b] Pinch changes <<CPTPlotRange: 0x8da80e0> {0, 9}> 

编辑:

我做了一些插入NSLOG,下面的代码是创build一个手势:

 CPTXYPlotSpace *plotSpace2 = (CPTXYPlotSpace *) graph2.defaultPlotSpace; plotSpace2.allowsUserInteraction = YES; plotSpace2.delegate = self; plotSpace2.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromInteger([difference integerValue]*1.03)]; plotSpace2.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(9)]; plotSpace2.globalXRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromInteger([difference integerValue]*1.03)]; plotSpace2.globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(9)]; 

所以有plotspace.delegate = self是原因,改为x.delegate =自我,并修复了我所看到的手势问题。

不幸的是,我只能缩放x的代码没有任何区别。 : – /

您的委托阻止对yRange任何更改。 设置初始yRange ,设置绘图空间委托。

 plotSpace2.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(9)]; plotSpace2.delegate = self; 

此行为在版本1.4中更改。 在之前的版本中, -plotSpace:willChangePlotRangeTo:forCoordinate:仅在缩放时调用。 现在,任何时候绘图的范围都会改变。