2011-10-18 2 views
0

CorePlot에 대한 질문이 있습니다. 제 질문은 : 저는 커브를 그렸습니다. 다음 작업은 곡선 선택입니다. 핸들러를 추가했습니다 :CorePlot 플롯 히트 테스트

하지만 작동하지 않습니다. 아이디어가 있으십니까? 감사합니다. .

- (BOOL)npvCurveContainPoint:(CGPoint)point 
{ 
    if ([[graph allPlots] count] == 0) { 
     return NO; 
    } 
    CPTPlot* plot = [graph plotAtIndex:0]; 
    BOOL xContains = [[plot plotRangeForCoordinate:CPTCoordinateX] containsDouble:point.x]; 
    BOOL yContains = [[plot plotRangeForCoordinate:CPTCoordinateY] containsDouble:point.y]; 
    if (xContains && yContains) { 
     return YES; 
    } 
    return NO; 
} 

#pragma mark - Plot Space Delegate Methods 
- (BOOL)plotSpace:(CPTPlotSpace*)space shouldHandlePointingDeviceDownEvent:(id)event atPoint:(CGPoint)point 
{ 
    CGPoint pointInPlotArea = [graph convertPoint:point fromLayer:graph.plotAreaFrame]; 
    if ([self npvCurveContainPoint:pointInPlotArea]) { 
     NSLog(@"Curve is selected!!!"); 
    } 
    return NO; 
} 

답변

0

정확하게 테스트하려고하는 것이 확실하지 않지만 좌표계를 혼합하고 있습니다. 플롯 공간 위임 메소드에 전달 된 포인트는 보기 플롯 영역 레이어의 좌표입니다. 이를 전체 그래프 레이어의 좌표계로 변환 한 다음 플롯 공간 데이터 좌표에 대해 점을 테스트합니다.

플롯 공간은 데이터와 화면상의 플롯 영역 간의 매핑을 정의합니다. xRangelocation은 그림 영역의 왼쪽 가장자리에 해당하고 끝점 (location + length)은 오른쪽 가장자리에 해당합니다. 마찬가지로 yRangelocation은 그림 영역의 아래쪽 가장자리에 해당하며 끝점은 위쪽 가장자리에 해당합니다. 플롯 범위는 음수 길이를 가질 수 있습니다. 즉, 종점의 데이터 좌표가 시작 위치보다 작을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 아마 내가 원하는 걸 설명해야 할 것 같아. 내 작업은 사용자가 커브 켜기가 아닌지 확인하고 있습니다. 나는 상징없이 작업을 해결하고 싶다. – Dmitry

+0

어떤 커브? 작의 선이나 그 밖의 다른 것? –