gpt4 book ai didi

reactjs - React Native 需要点击两次 onPress 才能工作

转载 作者:行者123 更新时间:2023-12-03 14:18:58 25 4
gpt4 key购买 nike

我创建了一个自动完成搜索字段,它使用 Mapbox API 显示地点。我正在使用 ListView 作为建议列表。当列表出现并且我点击我需要选择的地址时,第一次点击键盘会隐藏,第二次点击时 onPress 会起作用。

enter image description here

我正在尝试找出问题所在。

 <View style={styles.container}>
<View style={styles.searchContainer}>
<View style={styles.mapMarkerContainer}>
{mapMarkerIcon}
</View>
<View style={styles.inputContainer}>
<TextInput
style={styles.textinput}
onChangeText={this.searchLocation}
placeholder="Type your address here"
underlineColorAndroid='rgba(0,0,0,0)'
value={this.state.inputVal}
placeholderTextColor="#fff"
/>
</View>
</View>
<View keyboardShouldPersistTaps='always' style={styles.listViewContainer}>
<ListView
dataSource={ds.cloneWithRows(this.state.searchedAdresses)}
renderRow={this.renderAdress}
style={styles.listView}
renderSeparator={this.renderSeparator}
enableEmptySections
/>
</View>
</View>

renderAddress

renderAdress = (address) => {
return (
<TouchableOpacity onPress={() => this.onListItemClicked(address)} style={styles.listItem}>
<View>
<Text>{address.place_name}</Text>
</View>
</TouchableOpacity>
);
};

onListItemClicked

onListItemClicked= (address) => {
this.props.onAddressGet(address);
console.log(address);
this.setState({
searchedAdresses: [],
inputVal: address.place_name
});
}

最佳答案

您应该将keyboardShouldPersistTaps属性移动到ListView,因为它是ScrollView的一个属性,并将继承到ListView:

而不是

<View keyboardShouldPersistTaps='always' 
<ScrollView ...>

您需要:

<View 
<ScrollView keyboardShouldPersistTaps='always' ...>

https://facebook.github.io/react-native/docs/scrollview.html#keyboardshouldpersisttaps

关于reactjs - React Native 需要点击两次 onPress 才能工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49284127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com