在设备上运行app时,不会调用pl​​otAreaWasSelected

时间:2014-09-22 02:35:40

标签: ios core-plot

我正在使用核心绘图绘制一个简单的散点图,我想在绘图区域委托" plotAreaWasSelected"被称为。 当我使用iOS模拟器测试应用程序时,一切正常,但是当我更改为真正的iOS设备时,从不调用委托方法。我发现核心情节演示示例有同样的问题。 有没有人有同样的问题?我对此感到困惑,希望有人可以提供帮助。

我使用的是Xcode 6.0.1,我的设备是iOS7.1,模拟器是iOS8.0。

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案 在核心情节源代码中,我看到了:

CGPoint lastPoint = self.touchedPoint;

// omit some codes......

// !!!!! the second condition of the if sentence cause my problem !!!!!
if ( CGRectContainsPoint(self.bounds, plotAreaPoint) && CGPointEqualToPoint(plotAreaPoint, lastPoint) ) {
        if ( [theDelegate respondsToSelector:@selector(plotAreaTouchUp:)] ) {
            [theDelegate plotAreaTouchUp:self];
        }

        if ( [theDelegate respondsToSelector:@selector(plotAreaTouchUp:withEvent:)] ) {
            [theDelegate plotAreaTouchUp:self withEvent:event];
        }

        if ( [theDelegate respondsToSelector:@selector(plotAreaWasSelected:)] ) {
            [theDelegate plotAreaWasSelected:self];
        }

        if ( [theDelegate respondsToSelector:@selector(plotAreaWasSelected:withEvent:)] ) {
            [theDelegate plotAreaWasSelected:self withEvent:event];
        }

        return NO; // don't block other events in the responder chain
    }

在实际设备环境中,触摸开始点和触摸终点通常彼此不同,它们总是不一样。
因此,条件CGPointEqualToPoint(plotAreaPoint, lastPoint)始终为false,并且if句中的代码永远不会被执行 为了符合这一点,我在if:

中删除了第二个条件
if ( CGRectContainsPoint(self.bounds, plotAreaPoint)) { ... }

它已经解决了。