React Native ScrollView键盘点击不起作用的解决方法(Android)

11
我有以下代码,它可以在我的iOS应用中工作,并在屏幕上任何地方单击时保持键盘打开状态,但在Android上仍会关闭键盘,有什么想法吗?
return (
            <ScrollView
                style={ styles.flex }
                automaticallyAdjustContentInsets={ false }
                keyboardShouldPersistTaps={ true }
                contentInset={{ 'bottom':20 }}
                keyboardDismissMode='on-drag'
                >
                <View>...</View>
            </ScrollView>
        );

这可能是因为您的触摸被检测为拖动,并且启用了on-drag的keyboardDismissMode。如果不是,您是否可以提供https://rnplay.org/片段? - Daniel Schmidt
我已经尝试过去除它,但没有任何改变。奇怪的是这只是在Android模拟器上出现问题。我不认为我能够将其分解以进行重放,恐怕这是一个大项目。 - Jonathan Lockley
你可能是在 View 中使用了 FlatList - Idan
6个回答

9

如果你的 ScrollView/FlatList 嵌套在另一个 ScrollView/Flatlist 中,你需要将 keyboardShouldPersistTaps 设置为父级 ScrollView/Flatlist 以及所有嵌套的 ScrollView/Flatlist。


1
经过测试和确认,keyboardShouldPersistTaps="handled" 需要在特定的 ScrollView 及其父级上设置。将其保留在顶层 ScrollView 上是不够的。 - XaReSx
1
这是我的问题。我在一个ScrollView内部,该ScrollView位于一个父级FlatList内的<Modal />组件中。一旦我将其添加到父级FlatList中,一切都很好。谢谢! - Amir5000

6

我希望以上答案能够解决你的问题,这里是文档

顺便提一下,在屏幕上第一个ScrollView应该提供keyboardShouldPersistTaps


聪明的男人 ❤️ - undefined

3

请尝试使用以下内容:keyboardShouldPersistTaps="handled"。


3

对于此选项,值 true 已被弃用,请改用 always

keyboardShouldPersistTaps="always"

Docs


2

实际上,在父级ScrollView和包含我的可触摸内容的ScrollView上使用keyboardShouldPersistTaps解决了我的问题。

示例:

<ScrollView keyboardShouldPersistTaps={"always"}>
  <Text> Hello World </Text>
  <ScrollView keyboardShouldPersistTaps={"always"}>
      // Here my touchable contents are being rendered and
      // I need to keep keyboard open when I tap on each of them
      {myTags.map((el,ind)=>{ return(...)}
  </ScrollView>
  <Text> The bottom content of my tags </Text>
</ScrollView>

0

这不是正确的语法,你应该使用

keyboardShouldPersistTaps='handled' 或其他值为 'always'


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接