2010-11-18 10 views
6

Core Plotで作成したmyeグラフでplotSymbolをクリック(またはタッチ)したときにコードを実行しようとしています。CorePlotでplotSymbolをタップ

これは、散布図では動作しません:

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

しかし、私はbarPlotを使用する場合、これはうまく機能:

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

私の際にユーザーがクリックまたはタッチをキャプチャする私の試みから欠落しているもの散布図?

+0

また、私のコードでこの機能を統合しようとしていますが、このメソッドを追加すると、barplotをタップしても呼び出されません。私はこのメソッドの実装について事前に明確に説明しています... – ravoorinandan

答えて

14

散布図にplotSymbolMarginForHitDetectionを設定する必要があります。プロットシンボルのサイズに合わせて設定するか、大きなターゲットをクリックする必要がある場合はそれを少し大きく設定してください。

+0

どうもありがとう! また、plotSymbolMarginForHitDetectionをプロットの幅/シンボル数に設定することで、シンボルの数が少ないときにシンボルを選択しやすくすることができますが、シンボルの数が多い場合にはそのシンボルを選択することもできます。 –

+0

男私は、このフレームワークですべてが私たちにどのように公開されているのが大好きです。よく設計されています。 –

9

また、CPScatterPlotの代理人がオブジェクトを指すように設定することを忘れないでください。そうしないと、呼び出されません。

1

CPTGraphHostingViewのサブクラス(例えば、xibから来るinitWithCoder)でinitを設定する場合、hostedGraphプロパティはCore Plot(少なくとも1.3以降)によって詰まる可能性があります。タップ処理が短絡します。

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

私の回避策は、それがすでに設定されていない場合は、私のnumberOfRecordsForPlotにhostedGraphを設定することです:-)これは私に起こっ言うまでもないです。