diff --git a/apps/app/ui-tests-app/events/main-page.ts b/apps/app/ui-tests-app/events/main-page.ts index 2033fb6b5..ae563e442 100644 --- a/apps/app/ui-tests-app/events/main-page.ts +++ b/apps/app/ui-tests-app/events/main-page.ts @@ -14,6 +14,7 @@ export function loadExamples() { examples.set("gestures", "events/gestures"); examples.set("touch", "events/touch-event"); examples.set("pan", "events/pan-event"); + examples.set("swipe-passtrough", "events/swipe-event-passtrough"); examples.set("handlers", "events/handlers"); examples.set("console", "events/console"); examples.set("i61", "events/i61"); diff --git a/apps/app/ui-tests-app/events/swipe-event-passtrough.ts b/apps/app/ui-tests-app/events/swipe-event-passtrough.ts new file mode 100644 index 000000000..3f768634a --- /dev/null +++ b/apps/app/ui-tests-app/events/swipe-event-passtrough.ts @@ -0,0 +1,22 @@ +import { EventData } from "tns-core-modules/data/observable"; +import { Page } from "tns-core-modules/ui/page"; +import { SwipeGestureEventData } from "tns-core-modules/ui/gestures"; +import { TextView } from "tns-core-modules/ui/text-view"; + +let outputText: TextView; +export function navigatingTo(args: EventData) { + var page = args.object; + outputText = page.getViewById("output"); +} + +export function onSwipe(data: SwipeGestureEventData) { + const msg = `swipe state:${data.direction}`; + console.log(msg); + outputText.text += msg + "\n"; +} + +export function onTap(args) { + const msg = `tapEvent triggered`; + console.log(msg); + outputText.text += msg + "\n"; +} diff --git a/apps/app/ui-tests-app/events/swipe-event-passtrough.xml b/apps/app/ui-tests-app/events/swipe-event-passtrough.xml new file mode 100644 index 000000000..356a5a5ba --- /dev/null +++ b/apps/app/ui-tests-app/events/swipe-event-passtrough.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/tns-core-modules/ui/core/view/view.android.ts b/tns-core-modules/ui/core/view/view.android.ts index 31eb747d8..77dee005d 100644 --- a/tns-core-modules/ui/core/view/view.android.ts +++ b/tns-core-modules/ui/core/view/view.android.ts @@ -72,12 +72,7 @@ function initializeTouchListener(): void { onTouch(view: android.view.View, event: android.view.MotionEvent): boolean { const owner = this.owner; - for (let type in owner._gestureObservers) { - let list = owner._gestureObservers[type]; - list.forEach(element => { - element.androidOnTouchEvent(event); - }); - } + owner.handleGestureTouch(event); let nativeView = owner.nativeViewProtected; if (!nativeView || !nativeView.onTouchEvent) { @@ -320,6 +315,18 @@ export class View extends ViewCommon { return false; } + public handleGestureTouch(event: android.view.MotionEvent): any { + for (let type in this._gestureObservers) { + let list = this._gestureObservers[type]; + list.forEach(element => { + element.androidOnTouchEvent(event); + }); + } + if (this.parent instanceof View) { + this.parent.handleGestureTouch(event); + } + } + private hasGestureObservers() { return this._gestureObservers && Object.keys(this._gestureObservers).length > 0 }