タッチまたはピンチ ジェスチャ中に y 軸がズームおよびスケーリングされないように、アプリで以下のコードを実行しています。globalXRange と Y と同様に、axisConstraints が既に割り当てられています。
-(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 個のプロットの変更がログに記録されることです?? コードは正しく動作しているようですが、プロットが表示されず、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 を挿入していくつかいじくり回しましたが、以下のコードはジェスチャを作成しているものです:
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=self に変更され、私が見ていたジェスチャーの問題が修正されました。
残念ながら、xのみをズームするためのコードには違いはありません。:-/