滚动视图内的 onPress 事件需要 React Native 两次点击

Posted

技术标签:

【中文标题】滚动视图内的 onPress 事件需要 React Native 两次点击【英文标题】:React Native two time taps required for onPress event inside scrollview 【发布时间】:2019-10-25 11:27:07 【问题描述】:

我在 ScrollView 和 KeyboardAvoidingView 中使用 TextInput,但它需要在键盘打开时点击两次才能提交文本。 对于解决方案,我添加了 keyboardShouldPersistTaps="always" 但它不起作用。

render() 
    return (
        <View style=flex: 1>
            <KeyboardAvoidingView style=flex:1>
            <ScrollView keyboardShouldPersistTaps="always" 
                contentContainerStyle=
                    paddingHorizontal: 10,
                    flexGrow : 1,
                    justifyContent : 'center',
                    alignItems:'center'>
                <View style=backgroundColor:'green', width:'100%', borderRadius:8, overflow:'hidden'>
                    <TextInput style=margin:10/>
                    <TouchableOpacity onPress=() => alert('alert')>
                        <Text>Submit</Text>
                    </TouchableOpacity>
                </View>
            </ScrollView>
            </KeyboardAvoidingView>
        </View>
    )

如何在单击时触发新闻事件?

【问题讨论】:

我将此组件用于另一个页面滚动视图,因此在解决超级滚动视图问题上添加“keyboardShouldPersistTaps="always"”后它无法正常工作 这能回答你的问题吗? How to avoid having to click TouchableOpacity twice to trigger onPress event? 【参考方案1】:

使用"handled" 代替"always"keyboardShouldPersistTaps="handled"

【讨论】:

它有效(keyboardShouldPersistTaps="handled" 与您第一次写的一样,带有“d”)【参考方案2】:

你必须像这样编写 TouchableOpacity 组件的 onPress 方法

 <TouchableOpacity
onPress=() => alert('Clicked)>
      <Text>Submit</Text>
 </TouchableOpacity>

【讨论】:

以上是关于滚动视图内的 onPress 事件需要 React Native 两次点击的主要内容,如果未能解决你的问题,请参考以下文章

React Native:如何更改 onPress 事件的视图

如何让 onPress 在 TextInput 内的 React Native Text 元素上触发?

React Native TouchableOpacity OnPress 不使用循环

如何在 react-native 的 onPress 按钮上滚动底部?

如何在 react-native 中的 onPress 按钮上滚动顶部?

React Native 小记解决嵌套内的 TouchableHighlightTouchableOpacity 等组件onPress误触发