0

CPPlotSpaceDelegate プロトコルを使用して iOS でタッチを受信し、defaultPlotSpace のデリゲートを設定した後、次のメソッドを使用しています。

- (BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceDownEvent:(id)event 
          atPoint:(CGPoint)point{

}

-(BOOL)plotSpace:(CPPlotSpace *)space shouldHandlePointingDeviceDraggedEvent:(id)event atPoint:(CGPoint)point{

   NSSet *allTouches = [event allTouches];
   UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
   UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];

   /*
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)space;
    CPTScatterPlot *scatterPlot = [[[plotSpace graph] allPlots] objectAtIndex:0]; 
    CGPoint plotAreaPoint = [[plotSpace graph] convertPoint:point toLayer:scatterPlot];
    NSLog(@"PlotAreaPoint : %.1f, %.1f", plotAreaPoint.x, plotAreaPoint.y);
   */

}
-(BOOL)plotSpace:(CPPlotSpace *)space shouldHandlePointingDeviceUpEvent:(id)event atPoint:(CGPoint)point{
}

複数のタッチから「PlotAreaPoint」を取得するにはどうすればよいですか? 誰か助けてください。

4

1 に答える 1

0

ホスティング ビューは、ピンチ ジェスチャを除き、マルチタッチ イベントを無視します。シングルタッチのイベントのみがグラフに渡され、次にプロットとプロット スペースに渡されます。

この方法でマルチタッチ イベントをキャプチャする必要がある場合は、-touchesBegan:withEvent:メソッドを変更しCPTGraphHostingViewて目的のイベントを渡すことができます。このメソッドは、イベントからポイントを取得し、正しい座標系に変換する方法も示しています。

selfこのコードでは、プロット スペースではなく、ホスティング ビューであることに注意してください。

CGPoint pointOfTouch = [[[event touchesForView:self] anyObject] locationInView:self];
if ( !collapsesLayers ) {
    pointOfTouch = [self.layer convertPoint:pointOfTouch toLayer:hostedGraph];
}
else {
    pointOfTouch.y = self.frame.size.height - pointOfTouch.y;
}
于 2012-05-22T01:07:44.933 に答える