目前我正在用兩個資料圖(圖上的兩條線)繪制圖表,當我單擊一條線“indexOfVisiblePointClosestToPlotAreaPoint”方法給我正確的索引和另一個給我錯誤的索引時,甚至不是最接近的可見一個它的跳過/跳躍倍數之間的點。例如:如果我點擊索引號 20,它會跳轉到 15 或 25,反之亦然。這是找到索引的計算
-(NSUInteger)indexOfVisiblePointClosestToPlotAreaPoint:(CGPoint)viewPoint
{
NSUInteger dataCount = self.cachedDataCount;
CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint));
BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL));
[self calculatePointsToDraw:drawPointFlags forPlotSpace:(CPTXYPlotSpace *)self.plotSpace includeVisiblePointsOnly:YES numberOfPoints:dataCount];
[self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount];
NSInteger result = [self extremeDrawnPointIndexForFlags:drawPointFlags numberOfPoints:dataCount extremeNumIsLowerBound:YES];
if ( result != NSNotFound ) {
CGFloat minimumDistanceSquared = CPTNAN;
for ( NSUInteger i = (NSUInteger)result; i < dataCount; i ) {
if ( drawPointFlags[i] ) {
CGFloat distanceSquared = squareOfDistanceBetweenPoints(viewPoint, viewPoints[i]);
if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) {
minimumDistanceSquared = distanceSquared;
result = (NSInteger)i;
}
}
}
}
free(viewPoints);
free(drawPointFlags);
return (NSUInteger)result;
}

uj5u.com熱心網友回復:
您是否正在檢查plot委托方法中傳遞的引數?如果plotSymbolMarginForHitDetection. 除非前面沒有任何內容,否則它甚至不會檢查另一個情節。兩條線像這樣靠得很近,您需要使用一個小的命中邊距來確保觸摸記錄在正確的圖上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/434855.html
