From 71e8a24bd87e08be5a25c14c2eecfbbe39a912da Mon Sep 17 00:00:00 2001 From: Dimitris - Rafail Katsampas Date: Mon, 6 Jul 2020 20:53:00 +0300 Subject: [PATCH 1/3] fix: Android 'isScrollEnabled' does not apply while gesture is underway. --- .../java/org/nativescript/widgets/HorizontalScrollView.java | 2 +- .../main/java/org/nativescript/widgets/VerticalScrollView.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java b/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java index c634897199..af8a051252 100644 --- a/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java +++ b/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java @@ -70,7 +70,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { @Override public boolean onTouchEvent(MotionEvent ev) { - if (!this.scrollEnabled && ev.getAction() == MotionEvent.ACTION_DOWN) { + if (!this.scrollEnabled && (ev.getAction() == MotionEvent.ACTION_DOWN || ev.getAction() == MotionEvent.ACTION_MOVE)) { return false; } diff --git a/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java b/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java index db109467cb..23144c2d92 100644 --- a/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java +++ b/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java @@ -70,7 +70,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { @Override public boolean onTouchEvent(MotionEvent ev) { - if (!this.scrollEnabled && ev.getAction() == MotionEvent.ACTION_DOWN) { + if (!this.scrollEnabled && (ev.getAction() == MotionEvent.ACTION_DOWN || ev.getAction() == MotionEvent.ACTION_MOVE)) { return false; } From 93947018216c007be32140d7bcf6d00ebc87b4cb Mon Sep 17 00:00:00 2001 From: Dimitris - Rafail Katsampas Date: Mon, 6 Jul 2020 23:38:26 +0300 Subject: [PATCH 2/3] Added e2e sample. --- e2e/ui-tests-app/app/scroll-view/main-page.ts | 1 + .../app/scroll-view/scroll-enabled-page.ts | 25 +++++++++++++++++++ .../app/scroll-view/scroll-enabled-page.xml | 7 ++++++ 3 files changed, 33 insertions(+) create mode 100644 e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts create mode 100644 e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.xml diff --git a/e2e/ui-tests-app/app/scroll-view/main-page.ts b/e2e/ui-tests-app/app/scroll-view/main-page.ts index 6f84bec333..8089762eaf 100644 --- a/e2e/ui-tests-app/app/scroll-view/main-page.ts +++ b/e2e/ui-tests-app/app/scroll-view/main-page.ts @@ -17,6 +17,7 @@ export function loadExamples() { examples.set("safe-area-images", "scroll-view/safe-area-images-page"); examples.set("safe-area-images-overflow", "scroll-view/safe-area-images-overflow-page"); examples.set("layout-outside-scroll", "scroll-view/layout-outside-scroll-page"); + examples.set("scroll-enabled", "scroll-view/scroll-enabled-page"); return examples; } diff --git a/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts b/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts new file mode 100644 index 0000000000..da8134105f --- /dev/null +++ b/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts @@ -0,0 +1,25 @@ +import { EventData as ObservableEventData } from "tns-core-modules/data/observable"; +import { GestureStateTypes, PanGestureEventData } from "tns-core-modules/ui/gestures"; +import { Page } from "tns-core-modules/ui/page"; + +export function pageLoaded(args: ObservableEventData) { + var page = args.object; +} + +export function panLayout(args: PanGestureEventData) +{ + const scrollView = args.object.parent; + + if (args.state === GestureStateTypes.began) { + args.object.previousDeltaY = 0; + scrollView.isScrollEnabled = false; + } + else if (args.state === GestureStateTypes.changed) { + const diff = (args.deltaY - args.object.previousDeltaY); + args.object.translateY += diff; + args.object.previousDeltaY = args.deltaY; + } + else if (args.state === GestureStateTypes.ended) { + scrollView.isScrollEnabled = true; + } +} diff --git a/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.xml b/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.xml new file mode 100644 index 0000000000..ee85aac1dd --- /dev/null +++ b/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.xml @@ -0,0 +1,7 @@ + + + + + + From c40ec9dd469e61a0d195ef45cc4a38a0ffe71b67 Mon Sep 17 00:00:00 2001 From: Dimitris - Rafail Katsampas Date: Mon, 6 Jul 2020 23:56:31 +0300 Subject: [PATCH 3/3] Fixed indentation errors. --- .../app/scroll-view/scroll-enabled-page.ts | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts b/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts index da8134105f..4be65ab521 100644 --- a/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts +++ b/e2e/ui-tests-app/app/scroll-view/scroll-enabled-page.ts @@ -8,18 +8,18 @@ export function pageLoaded(args: ObservableEventData) { export function panLayout(args: PanGestureEventData) { - const scrollView = args.object.parent; + const scrollView = args.object.parent; - if (args.state === GestureStateTypes.began) { - args.object.previousDeltaY = 0; - scrollView.isScrollEnabled = false; - } - else if (args.state === GestureStateTypes.changed) { - const diff = (args.deltaY - args.object.previousDeltaY); - args.object.translateY += diff; - args.object.previousDeltaY = args.deltaY; - } - else if (args.state === GestureStateTypes.ended) { - scrollView.isScrollEnabled = true; - } + if (args.state === GestureStateTypes.began) { + args.object.previousDeltaY = 0; + scrollView.isScrollEnabled = false; + } + else if (args.state === GestureStateTypes.changed) { + const diff = (args.deltaY - args.object.previousDeltaY); + args.object.translateY += diff; + args.object.previousDeltaY = args.deltaY; + } + else if (args.state === GestureStateTypes.ended) { + scrollView.isScrollEnabled = true; + } }