4

我在 ScrollView 中有一个 TextInput。

当 TextInput 处于焦点时,滚动不起作用。此问题仅影响 Android。

4

6 回答 6

9

环境

<ScrollView keyboardShouldPersistTaps="always"

结合下面的 textInput 组件(我为文本输入创建以解决此问题的自定义组件)解决了我的问题:

<TouchableOpacity
     activeOpacity={1}
     onPress={()=>this.input.focus()}>
     <View pointerEvents="none"
           <TextInput
              ref = {(input) => this.input = input}
           />
     </View>
</TouchableOpacity>
于 2019-03-03T12:19:24.860 回答
2

在滚动视图中使用keyboardShouldPersistTaps

<ScrollView keyboardShouldPersistTaps="handled">

它解决了你的问题

在此处查看文档https://facebook.github.io/react-native/docs/scrollview.html#keyboarddismissmode

于 2018-03-08T10:47:52.510 回答
1

这是预期的行为。

更多信息官方 TextInput 文档

您可能想尝试这样的事情:react-native-kayboard-aware-scroll-view

于 2016-09-28T11:50:53.383 回答
1

i use simple trick for TextInput and that work for me correctly .Should add this prop in TextInput :

<TextInput
      multiline={true}
      numberOfLines={1}
 />
于 2021-10-16T10:45:46.983 回答
0

这是一个很好的例子:http ://blog.arjun.io/react-native/mobile/cross-platform/2016/04/01/handling-the-keyboard-in-react-native.html

对我来说真正重要的是添加:

android:windowSoftInputMode="adjustResize"

在 AndroidManifest.xml 中以关注 textInput

于 2016-11-18T14:17:24.210 回答
0

我以不同的方式处理每个平台(在 Ios 中,对 inputText 的关注就足够了,不要忘记将this.scrollViewRefref 放入ScrollView该包装 inputText 并将 ref 索引 inputText

if (Platform.OS == 'android') {
    this.inputRefs[field].measure((w, h, px, py, xPage, yPage) => {
        this.scrollViewRef.scrollTo({ x: 0, y: yPage, animated: true })
        this.inputRefs[field].focus()
    })
} 
this.inputRefs[field].focus()
于 2019-11-27T10:05:52.087 回答