React Native — есть ли способ полностью скрыть клавиатуру?

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

Виртуальная клавиатура открыта

И снова нажмите Tab, чтобы отключить виртуальную клавиатуру.

Виртуальная клавиатура закрыта .

Однако, когда я набираю ввод с помощью жесткой клавиатуры (с ПК/сканирующего устройства) или касаюсь ввода, виртуальная клавиатура все еще отображается, и нет никакого способа предотвратить это. Я могу поймать событие и отключить виртуальную клавиатуру:

onKeyPress={() => {
  Keyboard.dismiss();
}}

Но это все еще создает раздражающую анимацию открытия-закрытия виртуальной клавиатуры. Есть ли способ остановить эту анимацию или полностью скрыть виртуальную клавиатуру?


person hrtlkr29    schedule 26.05.2020    source источник
comment
Вы тестировали его на устройстве с физической клавиатурой? IIRC ОС Android обрабатывает это автоматически, когда присутствует физическая клавиатура.   -  person LonelyCpp    schedule 26.05.2020
comment
попробуйте включить аппаратную клавиатуру в эмуляторе. переполнение стека   -  person LonelyCpp    schedule 26.05.2020
comment
Я еще не тестировал реальное устройство с физической клавиатурой. Попробую сразу, спасибо!   -  person hrtlkr29    schedule 26.05.2020
comment
О, я уже включил аппаратную клавиатуру. Если я печатаю с помощью аппаратной клавиатуры, виртуальная клавиатура все равно появляется!!!   -  person hrtlkr29    schedule 26.05.2020


Ответы (2)


Это известное ограничение React Native. Вы можете попробовать отключить события указателя следующим образом, но я не уверен, что это помешает физической клавиатуре создавать события, и вы потеряете прокрутку текста:

    <View pointerEvents="none">
      <Input
        value={String(value)}
        placeholder={placeholder}
      />
    </View>
person CampbellMG    schedule 26.05.2020
comment
К сожалению, виртуальная клавиатура все еще появляется после того, как я установил pointerEvents. Спасибо за ваше предложение в любом случае xD - person hrtlkr29; 26.05.2020

используйте реквизит примера textInput 'showSoftInputOnFocus':

<TextInput showSoftInputOnFocus={false} />

документация здесь https://github.com/facebook/react-native/commit/d88e4701fc46b028861ddcfa3e6ffede34d< /а>

person delfio francisco    schedule 31.08.2020