Я создал поле поиска автоконструкции, которое отображает места с использованием API MapBox. Я использую список listView для Sugesstions. Когда появится список, и я нажимаю по адресу, мне нужно выбрать, на первой ключе Keam Hides и 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
      });
}
4
Shivam 14 Мар 2018 в 20:24

1 ответ

Лучший ответ

Вам следует переместить свойство keyboardShouldPersistTaps в ListView, поскольку это свойство от ScrollView и будет унаследовано ListView:

Вместо того

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

Тебе нужно:

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

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

3
itinance 28 Мар 2018 в 17:36
1
Я переместил свойство keyboardShouldPersistTaps в ListView, и оно сработало. Спасибо.
 – 
Shivam
6 Апр 2018 в 09:53
У меня такая же проблема, но у меня View вместо ScrollView. Какую опору мне использовать, чтобы избавиться от этой ошибки?
 – 
Mighty
24 Авг 2020 в 15:34