我正在使用核心绘图绘制一个简单的散点图,我想在绘图区域委托" plotAreaWasSelected"被称为。 当我使用iOS模拟器测试应用程序时,一切正常,但是当我更改为真正的iOS设备时,从不调用委托方法。我发现核心情节演示示例有同样的问题。 有没有人有同样的问题?我对此感到困惑,希望有人可以提供帮助。
我使用的是Xcode 6.0.1,我的设备是iOS7.1,模拟器是iOS8.0。
答案 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)) { ... }
它已经解决了。