Реактивный: отклонить клавиатуру при прокрутке многострочного текстового ввода

#ios #react-native

#iOS #реагировать-родной

Вопрос:

Я использую многострочный текстовый ввод, и я хотел бы отключить клавиатуру при прокрутке с помощью реквизита onScroll ()

Код, который я пробовал:

 <View>
  <TextInput
    onChangeText={(bodyContent) => this.setState({bodyContent})}
    value = {this.state.bodyContent}
    editable = {true}
    multiline={true}
    onScroll = {() => Keyboard.dismiss() }
  />
</View>
  

Также заметил, что события onScroll не запускаются при прокрутке (даже пробовал с console.log( ) )

  • react-native»: «0.57.3»
  • Платформа: IOS

Ответ №1:

Вы правы, onScroll не запускается. Существует проблема по этой теме, однако, поскольку человек, создавший проблему, использовал устаревшую версию RN, проблема была закрыта. Вы должны открыть новый выпуск с новейшей версией RN. Я использовал RN 0.59, так что это определенно все еще проблема.

Ссылка на проблему:https://github.com/facebook/react-native/issues/20309

Вот моя реализация, которую можно скопировать и вставить куда угодно:

 import React, { useState } from 'react';
import { StyleSheet, TextInput, View, Keyboard } from 'react-native';

const FormInput = () => {
  const [text, setText] = useState();

  return (
    <View style={styles.container}>
      <TextInput
        onChangeText={setText}
        value={text}
        editable
        multiline
        onScroll={() => Keyboard.dismiss()}
        style={{ flex: 1, backgroundColor: 'red' }}
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1
  }
});

export default FormInput;