Автозамена на iOS не срабатывает onChangeText в react-native

собственная версия реакции: 0.43.4 Платформа: iOS

Действия по воспроизведению:

  1. Введите слово с ошибкой в ​​TextInput
  2. Нажмите пробел, чтобы убедиться, что оно еще не изменилось на правильное слово. В случае, если он действительно просто удалил и снова сделал слово с ошибкой.
  3. Теперь iOS должно отображать слово, подчеркнутое красным пунктиром. Нажмите на это, и iOS покажет вам 2 типа автозамены. Один будет сбоку от слова, а второй - вверху клавиатуры.
  4. Выберите автозамену в верхней части клавиатуры.
  5. Проверяя журналы и т. Д., Вы узнаете, что он не запускал событие onChangeText.

Есть идеи, как заставить его работать?


person Rohit Goyal    schedule 26.04.2017    source источник
comment
Итак, какой у вас вопрос?   -  person Viktor Sec    schedule 26.04.2017


Ответы (1)


Для тех, кто сталкивается с этим, проблема с GitHub находится здесь: https://github.com/facebook/react-native/issues/2552

Я подумал о временном обходном пути, пока проблема все еще не решена. По сути, в вашем обратном вызове onSubmitEditing пусть он сначала вызовет ваш обратный вызов onChangeText. Если бы вы ввели «awrsome», и оно было автоматически исправлено на «awesome», onChangeTextCallback был бы вызван с «awrsome».

onChangeTextCallback = (text) => { /* do stuff */ }
onSubmitEditingCallback = (e) => { /* do stuff */ }

А затем в вашем JSX:

  <TextInput
    onChangeText = {onChangeTextCallback}
    onSubmitEditing = {(e) => {
      onChangeTextCallback(e.nativeEvent.text);
      onSubmitEditingCallback(e);
    }}
  />
person Kevin    schedule 31.10.2017