首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >willChangePlotRangeTo:对核心图中的图没有影响

willChangePlotRangeTo:对核心图中的图没有影响
EN

Stack Overflow用户
提问于 2013-11-10 06:25:17
回答 1查看 722关注 0票数 2

我在我的应用程序中运行了下面的代码,以防止y轴在触摸或捏动手势时被放大和缩放。我已经分配了axisConstraints,globalXRange和Y也是如此。

代码语言:javascript
复制
-(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上滴答作响。

代码语言:javascript
复制
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时做了一些杂乱无章的工作,下面的代码就是创建这个手势的原因:

代码语言:javascript
复制
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放大的代码并没有什么区别。*-/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-11 01:42:17

您的委托正在阻止对yRange的任何更改。设置初始yRange后设置绘图空间委托。

代码语言:javascript
复制
plotSpace2.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)
                                                 length:CPTDecimalFromFloat(9)];
plotSpace2.delegate = self;

这种行为在1.4版中发生了变化。在以前的版本中,只有当捏缩时才调用-plotSpace:willChangePlotRangeTo:forCoordinate:。现在,当绘图范围发生变化时,它被称为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19886928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档