diff --git a/packages/core/ui/core/view/view-common.ts b/packages/core/ui/core/view/view-common.ts index 6ddb01c5e..ac75f1458 100644 --- a/packages/core/ui/core/view/view-common.ts +++ b/packages/core/ui/core/view/view-common.ts @@ -123,7 +123,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { _setMinWidthNative: (value: CoreTypes.LengthType) => void; _setMinHeightNative: (value: CoreTypes.LengthType) => void; - public _gestureObservers = {}; + public readonly _gestureObservers = {} as Record>; _androidContentDescriptionUpdated?: boolean; @@ -177,7 +177,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { onLoaded() { if (!this.isLoaded) { - const hasTap = this.hasListeners('tap') || this.hasListeners('tapChange') || this.getGestureObservers(GestureTypes.tap); + const hasTap = this.hasListeners('tap') || this.hasListeners('tapChange') || !!this.getGestureObservers(GestureTypes.tap); const enableTapAnimations = TouchManager.enableGlobalTapAnimations && hasTap; if (!this.ignoreTouchAnimation && (this.touchAnimation || enableTapAnimations)) { TouchManager.addAnimations(this); @@ -286,7 +286,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { this._gestureObservers[type].push(gestureObserve(this, type, callback, thisArg)); } - public getGestureObservers(type: GestureTypes): Array { + public getGestureObservers(type: GestureTypes): Array | undefined { return this._gestureObservers[type]; } @@ -495,10 +495,12 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { private _disconnectGestureObservers(type: GestureTypes): void { const observers = this.getGestureObservers(type); - if (observers) { - for (let i = 0; i < observers.length; i++) { - observers[i].disconnect(); - } + if (!observers) { + return; + } + + for (const observer of observers) { + observer.disconnect(); } }