Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CorePlot中两个绘图空间的缩放和平移_Ios_Core Plot - Fatal编程技术网

Ios CorePlot中两个绘图空间的缩放和平移

Ios CorePlot中两个绘图空间的缩放和平移,ios,core-plot,Ios,Core Plot,我有两个绘图空间,每个空间上有一个绘图。一个是散点图,另一个是条形图 目前,我已经打开了缩放功能(Y轴已禁用),并为平移设置了平移访客识别器 以下是我的PlotSpace委托方法代码 #pragma mark - #pragma mark PlotSpace Delegates - (CGPoint)plotSpace:(CPTPlotSpace *)space willDisplaceBy:(CGPoint)proposedDisplacementVector{ return CGP

我有两个绘图空间,每个空间上有一个绘图。一个是散点图,另一个是条形图

目前,我已经打开了缩放功能(Y轴已禁用),并为平移设置了平移访客识别器

以下是我的PlotSpace委托方法代码

#pragma mark -
#pragma mark PlotSpace Delegates

- (CGPoint)plotSpace:(CPTPlotSpace *)space willDisplaceBy:(CGPoint)proposedDisplacementVector{
    return CGPointMake(0, 0);

}

- (BOOL)plotSpace:(CPTPlotSpace *)space shouldScaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)interactionPoint {
    return YES;
}

- (CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate {
    if (coordinate == CPTCoordinateX) {
        [self checkIfCluster];
        return [CPTPlotRange plotRangeWithLocation:newRange.location length:newRange.length];

    } else {
        if ([space.identifier  isEqual: @"barplotspace"]) {
            return [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(10)]; //Look out for other one.

        }
            return [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat([self getMaxValue] * 1.25)]; //Look out for other one.

    }
    return nil;
}

- (void)plotSpace:(CPTPlotSpace *)space didChangePlotRangeForCoordinate:(CPTCoordinate)coordinate
{
    [self updateStats];
}

-(void)handlePan:(UIPanGestureRecognizer *)sender{

    CGPoint translation = [sender translationInView:self.view];

    CPTXYPlotSpace *space = (CPTXYPlotSpace *)[self.hostView.hostedGraph defaultPlotSpace];
    CGFloat movementDistance = space.xRange.lengthDouble / self.hostView.frame.size.width;
    if (translation.x > 0) {
        space.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(space.xRange.locationDouble - movementDistance * 30) length:space.xRange.length];

    } else {
        space.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(space.xRange.locationDouble + movementDistance * 30) length:space.xRange.length];

    }

}

但是,我还在创建时将两个plotspaces的委托都设置为self(定义了这些方法)<正在从条形图空间调用代码>willChangePlotRangeTo。不是
将被
取代,也不是
应被
取代。。。这很奇怪。我错过了什么吗?

当使用内置事件处理进行平移时,仅从
-pointingDeviceDraggedEvent:atPoint:
方法调用
-plotSpace:willDisplaceBy:
委托方法


-plotSpace:shouldScaleBy:aboutPoint:
委托方法仅从
-scaleBy:aboutPoint:
方法调用。内置夹点手势识别器使用此方法缩放打印空间以响应手势。

我忘了启用“允许用户在两个打印空间上进行交互”