键盘打开时滚动视图(React Native / Expo)

ldxq2e6h  于 2023-02-05  发布在  React
关注(0)|答案(4)|浏览(165)

我在Expo应用程序上使用KeyboardAvoidingView时遇到困难。我希望满足以下要求:

  • 当键盘打开时,视图应该向上滚动,以便用户始终看到输入,这就是KeyboardAvoidingView的用途。
  • 当键盘打开时,用户应能够滚动整个视图。
  • 不应该有任何奇怪的图形故障。
  • 它应该在iOS和Android上工作。

我尝试了100种不同的解决方案,但都没有得到令人满意的结果。由于我使用Expo,我无法使用https://github.com/APSL/react-native-keyboard-aware-scroll-view,因为它需要对AndroidManifest进行更改。
使用KeyboardAvoidingView,我发现最好的解决方案是在iOS上放behavior =“padding”,而在Android上则完全没有行为,不过,还是有一个问题:当键盘打开时,用户可以滚动的空间是有限的。2因此,当一个视图是一个有很多输入的长窗体时,用户不关闭键盘,滚动,然后再打开键盘,就不能到达窗体的底部。
我还有一个问题,键盘在输入焦点后打开,但我想留一些额外的空间,因为我的输入有一些填充,使用keyboardVerticalOffset属性对此没有影响。
在阅读了几十篇关于这个主题的帖子后,似乎没有人真正理解KeyboardAvoidingViews是如何工作的,以及如何有效地使用它们。甚至在官方的React Native文档中,也提到“Android和iOS都与这个 prop 交互[(行为)]不同。Android在完全没有行为 prop 的情况下可能会表现得更好,而iOS则相反”,好像他们并不真正理解这个属性是什么。
是否有人了解如何使用KeyboardAvoidingView以及如何使用它以满足4个要求?

lfapxunr

lfapxunr1#

我们用这个

<KeyboardAwareScrollView  keyboardShouldPersistTaps={'always'}
        style={{flex:1}}
        showsVerticalScrollIndicator={false}>
    {/* Your code goes here*/}
</KeyboardAwareScrollView>

我们没有遇到任何四个问题

4c8rllxm

4c8rllxm2#

你试过react-native-keyboard-spacer的KeyboardSpacer吗?我用react-native-elements使用它,效果很好!你唯一要小心的是当你想使用滚动视图的时候。只要确保你把滚动视图放在外面就行了!

mpgws1up

mpgws1up3#

在IOS中,我不需要KeyboardAvoidingView,我只使用自动调整键盘插入

<ScrollView
      automaticallyAdjustKeyboardInsets={true}
      contentContainerStyle={{
        flex: 1
      }}
    >
...
</ScrollView>
mitkmikd

mitkmikd4#

我不明白键盘避免视图的问题
它对我很有效:

<KeyboardAvoidingView style={{flex:1}} behavior="padding" enabled>
  your ui ....
</KeyboardAvoidingView>

相关问题