Реагировать на встроенную клавиатуру FlatListShouldPersistTaps не сохраняется - PullRequest
0 голосов
/ 28 октября 2019

У меня очень расстраивающая ситуация. Попытка заставить клавиатуру исчезнуть и обнаружить обработчик события onPress в дочерней строке.

Вот как выглядит мой код:

  _renderRow = (prediction) => {
    return (
      <TouchableOpacity onPress={() => {
        Keyboard.dismiss();
        this.setState({ location: prediction.description });
      }}>
        <View style={styles.listItemContainer}>
          <Text>{prediction.description}</Text>
        </View>
      </TouchableOpacity>
    )
  }

  render() {
    return (
    <View style={styles.wrapper}>
      {/* style={[this.state.predictions.length > 0 ? styles.searchContainerSuggest : styles.searchContainer]} */}
      <View style={styles.searchContainerSuggest}>
        <View style={{paddingLeft: 10, height: 45, display: 'flex', justifyContent: 'center'}}>
          <TextInput
            placeholder="Enter location"
            value={this.state.location}
            onChangeText={location => this.onChangeLocation(location)}
            style={styles.textInput}
          />
        </View>
        {this.state.predictions.length && this.state.location !== '' ?
          <FlatList
            keyboardShouldPersistTaps={'handled'}
            refreshing={!this.state.loaded}
            initialNumToRender={10}
            enableEmptySections={true}
            data={this.state.predictions}
            keyExtractor={(_, index) => index.toString()}
            renderItem={ ({item: prediction}) => this._renderRow(prediction) } />
            : null}
      </View>
    </View>
    );
  }

Мне, вероятно, нужна рука или две помощи в отношении того, какдля устранения этой проблемы.

Посмотрел несколько примеров того, как бороться с одновременным нажатием определенной клавиши. выбор ребенка будет выбран. После выбора сработает обработчик события onPress, и именно там я вызову Keyboard.dismiss (), чтобы скрыть клавиатуру. Не похоже на работу.

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Для тех, кто сталкивается с той же проблемой, что и я. Проверьте, вложен ли ваш FlatList или ScrollView в другой FlatList или ScrollView.

Если да, то добавьте

keyboardShouldPersistTabs='handled'

к элементу в качестве подпорки.

0 голосов
/ 28 октября 2019

добавить keyboardDismissMode = "none" в FlatList

...