2013-11-10 39 views
1

我在我的應用程序中運行下面的代碼,用於在觸摸或捏手勢期間停止y軸縮放和縮放。我已經指派axisConstraints,因爲是globalXRange和YwillChangePlotRangeTo:對核心圖中的圖形沒有任何影響

-(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 =自我是原因,改爲x.delegate =自我和固定姿勢的問題,我是看到。

不幸的是,我只能縮放x的代碼沒有區別。 : -/

+0

您使用的是哪個版本的Core Plot? –

+0

運行1.4核心繪圖和Xcode 5.0 – veggyaurus

+0

編輯:特別是plotspace.xRange&yRange線 – veggyaurus

回答

2

您的代表正在阻止對yRange的任何更改。在之後設置劇情空間代理,您設置了初始yRange

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

此行爲在版本1.4中已更改。在以前的版本中,僅在縮放時調用-plotSpace:willChangePlotRangeTo:forCoordinate:。現在,任何時候繪圖範圍都會改變。

+0

有沒有一種方法來確定我有兩個地塊空間,並以編程方式更改兩個給定的觸摸手勢? – veggyaurus

+0

如果您使用內置的用戶交互,它將自動更新兩個繪圖空間。正在改變的繪圖空間是委託方法的第一個參數。如果您以其他方式更改繪圖空間,則可以使用' - [CPTGraph allPlotSpaces]'方法來獲取圖形中所有繪圖空間的數組。 –