【发布时间】:2021-03-02 17:05:09
【问题描述】:
我在 ScrollView 中有一个 TouchableOpacity 和一个 TextInput,当 TextInput 聚焦时,我按下 TouchableOpacity 我想触发 首先触发 onBlur,然后触发 onPress。发生什么了?使用 keyboardShouldPersistTaps="never" 时 onPress 根本不会执行,使用 "handled" 时 onBlur 根本不会执行,输入也不会失去焦点。我注意到从'react-native-gesture-handler'而不是'react-native'导入的TouchableOpacity,并且keyboardShouldPersistTaps“从不”onPress和onBlur都会执行,但这里的问题是onBlur在onPress之后出现!有什么解决办法吗?
<ScrollView keyboardShouldPersistTaps="never">
<TouchableOpacity onPress={() => console.log('press')}>
<Text>Click me</Text>
</TouchableOpacity>
<TextInput value={value} onBlur={() => console.log('blur')} />
</ScrollView>
以字段为中心并按下可触摸的预期输出:
blur
press
编辑:更复杂的场景
//one component
<ScrollView keyboardShouldPersistTaps="handled">
<TextInput value={value} onBlur={() => console.log('blur')} />
<TextInput value={value} onBlur={() => console.log('blur')} />
<TextInput value={value} onBlur={() => console.log('blur')} />
</ScrollView>
//another component
<TouchableOpacity onPress={() => console.log('press')}>
<Text>Click me</Text>
</TouchableOpacity>
两个组件都将在一个更大的组件中呈现。
【问题讨论】:
标签: reactjs react-native native