Как читать каждое нажатие клавиши на TextInput независимо от изменения текста - PullRequest
0 голосов
/ 20 апреля 2020

Предположим, у меня есть TextInput компонент с maxLength={1}, и я набрал di git (скажем, '1'). Теперь TextInput заполнен и больше не вводит данные.

<TextInput maxLength={1} keyboardType='numeric' />

На данный момент я все еще хочу выяснить, что пользователь нажимает на клавиатуре. Допустим, пользователь пытается нажать «2», но я не смогу это определить на Android. Функция onChangeText и onKeyPress здесь не работает. Поскольку onChangeText вызывается только при изменении значения TextInput, а onKeyPress регистрирует только такие ключи, как backspace, введите, но не di git ключи, такие как 1, 2. Я предполагаю, что onKeyPress регистрирует все ключи на iOS, но не на Android.

Есть ли способ узнать, что пользователь нажимает на клавиатуре, когда значение TextInput не изменяется?

Я использую следующую версию -

  • «реагировать»: «16,9,0»,
  • «реагировать-нативно»: «0,61,5»,

1 Ответ

1 голос
/ 20 апреля 2020

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

  1. уберите maxLength, так как это зарегистрирует все изменения, например: '12345'

  2. внутри дескриптора вы устанавливаете состояние двух переменных.

Например: если пользователь вводит 12345, установите значение равным 1, а другую переменную - e.target.value. .

this.state = {
 value: '',
 watch: '',
}

handleTextChange = (e) => {
 const { value } = e.target

 this.setState(prevState => {
  ...prevState,
  watch: value,
  value: value.toString().length = 1,
 })
}

этот подход должен работать для вашего требования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...