Nativescript:如何以编程方式禁用/启用ScrollView滚动?

时间:2016-04-21 14:47:22

标签: android ios nativescript

有没有办法在NativeScript中以编程方式禁用/启用ScrollView滚动?

6 个答案:

答案 0 :(得分:10)

好的,我发现了怎么做。这在iOS上实际上非常简单:

var scrollView = page.getViewById('YOUR_VIEW_ID')
scrollView.ios.scrollEnabled = false // to disable
scrollView.ios.scrollEnabled = true  // to enable back

机器人:

同样对于我的特殊情况,我需要禁用滚动视图的滚动,但是将子视图拖放到其中。在子视图开始拖动(平移)事件时,我们通过以下方式阻止触摸事件拦截:

scrollView._nativeView.requestDisallowInterceptTouchEvent(true)

在停止拖动(平移)子视图事件时再次启用它们:

scrollView._nativeView.requestDisallowInterceptTouchEvent(false)

如果你有另一个案例并且只想禁用滚动视图滚动,你可以使用类似的东西(适用于Android):

scrollView._nativeView.setOnTouchListener(new android.view.View.OnTouchListener({
   onTouch: function (view, motionEvent) {
       console.log("DISABLED. onTouch event: Got    motionEvent.getAction() " + motionEvent.getAction() + ".");
       return true;
    }
}))

答案 1 :(得分:1)

Angular 2版本:

在你的HTML中:

<ScrollView #scrollView >
  ...
</ScrollView>

在您的控制器中:

@ViewChild('scrollView') scrollView: ElementRef;

allowScrolling(e) {
    const scrollView: ScrollView = this.scrollView.nativeElement;
    if (platformModule.device.os === 'Android') {
        scrollView.nativeView.requestDisallowInterceptTouchEvent(e);
    }
    if (platformModule.device.os === 'iOS') {
        scrollView.ios.scrollEnabled = !e;
    }
}

答案 2 :(得分:0)

没有简单的方法可以在 NativeScript 中停用 ScrollView 滚动。如果您想将 ScrollView 用作容器,可以使用ContentView来实现此目的。但是你可以给我更多信息,你为什么要禁用滚动。

答案 3 :(得分:0)

使用此

this.scrollview.isUserInteractionEnabled=false;

或者

this.scrollView.nativeElement).android.getParent().requestDisallowInterceptTouchEvent(false);

for android

答案 4 :(得分:0)

iOS

scroll_view.ios.scrollEnabled = false; // Disables user scrolling.
scroll_view.ios.scrollEnabled = true; // Enables user scrolling.

Android

scroll_view.android.setScrollEnabled(false); // Disables user scrolling.
scroll_view.android.setScrollEnabled(true); // Enables user scrolling.

答案 5 :(得分:0)

如果有人正在寻找此功能,您可以在 isUserInteractionEnabled 元素中将 false 设置为 ScrollView,这将禁用用户滚动(您仍然可以通过编程方式进行)。

https://github.com/NativeScript/NativeScript/issues/2892#issuecomment-253536941