Как настроить Onpress On Textinput в реагирующем

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

5 ответов

Решение

Вы не можете явно позвонить onPress за TextInput, Вы могли только использовать. onFocus который будет вызван, когда вы нажмете поле ввода, чтобы навести курсор туда. Не нужно фокусироваться на onBlur, так как ваш вариант использования не требуется., Ручка закрыта внутри onFocus если возможно.

onFocus = () => {
  // do something
}

render() {
  <TextInput onFocus={onFocus} />
}

Заворачивать TextInput в поле зрения и установить pointerEvents в виде none. Теперь вы можете использовать Pressable компонент из react-native слушать onpress событие.

<Pressable onPress={() => alert('Hi!')}>
 <View pointerEvents="none">
  <TextInput />
 </View>
</Pressable>

Что вам нужно сделать, это использовать onFocus и onBlur из TextInput.

<TextInput 
    onFocus={this.onFocus}
    onBlur={this.onBlur}
/>

onFocus = () => {
 // Open date picker
}

onBlur = () => {
 // Close date picker and add value to textinput
}

Вы можете сделать поле ввода текста доступным только для чтения, указав

       editable={false}
 pointerEvents="none"

prop в TextInput.

Оберните TextInput внутри представления и установите pointerEvents="none", оберните это представление с помощью TouchableOpacity или любого другого сенсорного компонента. Пожалуйста, смотрите пример ниже!

      <TouchableOpacity
  onPress={() => {
                    alert('hello');
                }}>
                <View pointerEvents="none">
                    <TextInput
                        onChange={() => {}}
                        value={''}
                        placeholder={waterMark}
                        editable={!isDisabled}
                        selectTextOnFocus={!isDisabled}
                    />
                </View>
</TouchableOpacity>
Другие вопросы по тегам