Skip to content

Commit 6fb3b5d

Browse files
committed
fix(ios): use different gesture tags
when there is more than one pie chart on the same page on iOS and the latest added pie chart slices get tapped the first pie chart's tap gesture handler gets triggered. this commit aims to fix this issue. (bar/line charts already have the logic that is added with this commit for pie and radar charts)
1 parent 1673bf5 commit 6fb3b5d

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/charting/charts/Chart.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { PanGestureHandlerOptions, PinchGestureHandlerOptions, TapGestureHandlerOptions } from '@nativescript-community/gesturehandler';
1+
import { PanGestureHandlerOptions, PinchGestureHandlerOptions, RotationGestureHandlerOptions, TapGestureHandlerOptions } from '@nativescript-community/gesturehandler';
22
import { Align, Canvas, CanvasView, Paint } from '@nativescript-community/ui-canvas';
33
import { EventData, Utils as NUtils, Trace } from '@nativescript/core';
44
import { ChartAnimator, EasingFunction } from '../animation/ChartAnimator';
@@ -215,6 +215,7 @@ export abstract class Chart<U extends Entry, D extends IDataSet<U>, T extends Ch
215215
public tapGestureOptions: TapGestureHandlerOptions & { gestureTag?: number };
216216
public doubleTapGestureOptions: TapGestureHandlerOptions & { gestureTag?: number };
217217
public pinchGestureOptions: PinchGestureHandlerOptions & { gestureTag?: number };
218+
public rotationGestureOptions: RotationGestureHandlerOptions & { gestureTag?: number };
218219

219220
/**
220221
* Sets a new data object for the chart. The data object contains all values

src/charting/listener/PieRadarChartTouchListener.ts

+18-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import { Utils } from '../utils/Utils';
55
import { ChartGesture, ChartTouchListener } from './ChartTouchListener';
66
import { GestureHandlerStateEvent, GestureState, GestureStateEventData, HandlerType, Manager, RotationGestureHandler, TapGestureHandler } from '@nativescript-community/gesturehandler';
77

8+
let TAP_HANDLER_TAG = 11232000;
9+
let ROTATION_HANDLER_TAG = 11231000;
10+
811
/**
912
* TouchListener for Pie- and RadarChart with handles all
1013
* touch interaction.
@@ -20,22 +23,35 @@ export class PieRadarChartTouchListener extends ChartTouchListener<PieRadarChart
2023
*
2124
* @param chart instance of the chart
2225
*/
26+
TAP_HANDLER_TAG;
27+
ROTATION_HANDLER_TAG;
2328
constructor(chart: PieRadarChartBase<any, any, any>) {
2429
super(chart);
30+
this.TAP_HANDLER_TAG = TAP_HANDLER_TAG++;
31+
this.ROTATION_HANDLER_TAG = ROTATION_HANDLER_TAG++;
32+
}
33+
34+
getTapGestureOptions() {
35+
return { gestureTag: this.TAP_HANDLER_TAG, ...(this.mChart.tapGestureOptions || {}) };
36+
}
37+
getRotationGestureOptions() {
38+
return { gestureTag: this.ROTATION_HANDLER_TAG, ...(this.mChart.rotationGestureOptions || {}) };
2539
}
2640

2741
getOrCreateRotationGestureHandler() {
2842
if (!this.rotationGestureHandler) {
2943
const manager = Manager.getInstance();
30-
this.rotationGestureHandler = manager.createGestureHandler(HandlerType.ROTATION, 11231, {}).on(GestureHandlerStateEvent, this.onRotationGesture, this);
44+
const options = this.getRotationGestureOptions();
45+
this.rotationGestureHandler = manager.createGestureHandler(HandlerType.ROTATION, options.gestureTag, {}).on(GestureHandlerStateEvent, this.onRotationGesture, this);
3146
}
3247
return this.rotationGestureHandler;
3348
}
3449

3550
getOrCreateTapGestureHandler() {
3651
if (!this.tapGestureHandler) {
3752
const manager = Manager.getInstance();
38-
this.tapGestureHandler = manager.createGestureHandler(HandlerType.TAP, 11232, {}).on(GestureHandlerStateEvent, this.onTapGesture, this);
53+
const options = this.getTapGestureOptions();
54+
this.tapGestureHandler = manager.createGestureHandler(HandlerType.TAP, options.gestureTag, {}).on(GestureHandlerStateEvent, this.onTapGesture, this);
3955
}
4056
return this.tapGestureHandler;
4157
}

0 commit comments

Comments
 (0)