带有 ScrollView 的 KeyboardAvoidingView

IT技术 reactjs react-native
2021-04-24 01:27:49

我对 react native 有点陌生,并且有一个我在 react native 文档中没有找到的问题。

我正在研究这个组件KeyboardAvoidingViewhttps : //facebook.github.io/react-native/docs/keyboardavoidingview.html

问题很简单 - 有没有人可以KeyboardAvoidingView很好地合作ScrollView我有很多TextInputs在一个组件(TextInputs高度的总和更大然后设备高度),而一旦键盘出现时,我有各种问题..
如果我使用View的不是ScrollView那么一切都很好,但我不能使用它,因为我需要比设备高度更多的空间。我在KeyboardAvoidingView文档中找不到关于 Scroll 的任何信息

谢谢。

4个回答

这就是我的解决方案,它可以工作并在焦点输入时自动滚动。我在世博会上试过这个,希望它有帮助。

<KeyboardAvoidingView style={{ flex: 1, flexDirection: 'column',justifyContent: 'center',}} behavior="padding" enabled   keyboardVerticalOffset={100}>
    <ScrollView>
        <View style={Styles.row}>
            //your view
        </View>
    </ScrollView>
</KeyboardAvoidingView>

我也试图在互联网上找到解决方案,但我自己想通了。我是能够使keyboardAvoidingView工作与ScrollView在iPhone模拟器SE。

我使用了 padding type positionkeyboardVerticalOffset设置为更高的值。我希望这可以帮助每个被困在这种情况下的人。

render() {
  return (
    <View style={...}>
      <ScrollView>
        <KeyboardAvoidingView
          style={{ flex: 1 }}
          keyboardVerticalOffset={100}
          behavior={"position"}
        >
          <TextInput style={styles.editInput} ... />
        </KeyboardAvoidingView>
      </ScrollView>
    </View>
  );
}

看起来 facebook 还没有实现滚动视图的解决方案。但是我找到了由 Wix 提供的解决方案,react-native-keyboard-aware-scrollview可以正常工作:)

npm i react-native-keyboard-aware-scrollview --save

import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scrollview';

<KeyboardAwareScrollView style={styles.container}>
  <TextInput style={styles.textInput} placeholder={'My Input'} />
</KeyboardAwareScrollView>

就我而言,我使用了:https : //github.com/APSL/react-native-keyboard-aware-scroll-view

<KeyboardAwareScrollView>
  ....
  <MyContainerComponent>
    ....
    <MyFormComponentWithInputs />
  </MyContainerComponent>
</KeyboardAwareScrollView>

它也支持较旧的 RN 版本。

我的文本输入隐藏得很深,是 ScrollView 的一些自定义子组件,但该包对 Android 和 iOS 都很好