【问题标题】:How to stop swipe in ScrollView?如何停止在 ScrollView 中滑动?
【发布时间】:2018-05-18 01:43:54
【问题描述】:

look this video of current scrolling behavior。我希望,只要手指从屏幕上抬起,就禁用滚动。

编辑:视频显示用户滚动浏览列表。当手指从屏幕上抬起时,您会看到滚动继续向上或向下短时间。

【问题讨论】:

  • 添加了视频的解释。这样,读者不必离开此页面即可了解您要查找的内容。此外,如果视频由于某种原因无法播放,人们仍然可以理解您的问题。

标签: javascript react-native scrollview


【解决方案1】:

我认为你需要的是:

<ScrollView
  bounces={false}
  />

这样滚动完成后,滚动动画将不会继续,立即停止。

【讨论】:

  • @Va,我已经测试过,它没有帮助,实际上,我试图解决另一个问题,请查看视频 drive.google.com/open?id=15hHKWDiilLf-FG1zUO3OOWjd677nz2Fk 滚动应该一项一项发生,你会看到当我快速滚动它时滚动到错误的项目,然后回到正确的项目
  • 我看了你的视频,好像不是关于ScrollView,很可能是你使用的 View Pager 库。
  • 现在我用的是 FlatList,谢谢,它可能是我正在搜索的那个
  • 我一直在搜索View Pager,都是横向的,你知道是纵向的吗?
  • 虽然我自己没用过,但我知道有一个npmjs.com/package/react-native-vertical-view-pager
【解决方案2】:

我相信你想要的基本上是在动量存在时停止滚动。为此,您可以在 ScrollView 上使用 onMomentumScrollBegin 回调并在其上调用 .scrollToEnd({animated: false})

这就是它的样子:

<ScrollView
  ref={(ref) => this.scrollView = ref}
  scrollEnabled={this.state.scroll}
  onMomentumScrollBegin={
    () => this.scrollView.scrollToEnd({animated: false})
  }
 >
   ...CONTENT HERE...
 </ScrollView>

【讨论】:

  • 我需要禁用滑动滚动。如果我在屏幕上滚动并按住手指,则滚动应该可用,只有当我抬起手指滚动时才应该继续
  • @АндрейШостик 这就是上述功能的作用。你试过了吗?没用吗?
  • 我已经测试过了,它没有帮助,出现了一点滚动然后它使 scrollToEnd,实际上我试图解决另一个问题,请看视频drive.google.com/open?id=15hHKWDiilLf-FG1zUO3OOWjd677nz2Fk滚动应该一个一个发生项目,你会看到当我快速滚动它滚动到错误的项目,然后回到正确的项目
【解决方案3】:

我认为你的意思是一旦用户抬起手指就停止滚动 试试:

<ScrollView 
  ...

  decelerationRate = {0}
  />

check docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多