react / react/react-native

The TextInput's showSoftInputOnFocus prop is causing unnecessary events to be triggered.

Abierto
#45,106 3 comentarios 5 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Component: TextInput Issue: Author Provided Repro Newer Patch Available
Lenguaje dominante
C++
Estrellas
127k
Forks
25.3k
Merge medio
1 d 23 h
PR fusionados (30 d)
4

Descripción

Description

I'm encountering an issue with the TextInput component in React Native when using the showSoftInputOnFocus prop. When the TextInput gains focus, the keyboard does not open, the keyboardWillShow and keyboardDidShow events are not triggered. However, upon losing focus, the keyboardWillHide and keyboardDidHide events are fired.

This behavior causes problems with Keyboard Aware components that listen for these events.

Steps to reproduce
  1. Create a new React Native project.
  2. Add a TextInput component with the showSoftInputOnFocus prop set to false.
  3. Add event listeners for keyboardWillShow, keyboardDidShow, keyboardWillHide, and keyboardDidHide events.
  4. Focus on the TextInput and observe that keyboardWillShow and keyboardDidShow events are not triggered.
  5. Blur the TextInput and observe that keyboardWillHide and keyboardDidHide events are triggered.
React Native Version

0.72.9

Affected Platforms

Runtime - iOS

Output of npx react-native info
System:
  OS: macOS 14.2.1
  CPU: (8) arm64 Apple M1 Pro
  Memory: 140.09 MB / 16.00 GB
  Shell:
    version: 3.2.57
    path: /bin/bash
Binaries:
  Node:
    version: 18.18.2
    path: ~/miniconda3/bin/node
  Yarn:
    version: 1.22.19
    path: /usr/local/bin/yarn
  npm:
    version: 9.8.1
    path: ~/miniconda3/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.13.0
    path: /usr/local/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.0
      - iOS 17.0
      - macOS 14.0
      - tvOS 17.0
      - watchOS 10.0
  Android SDK:
    API Levels:
      - "32"
      - "33"
      - "33"
    Build Tools:
      - 30.0.3
      - 33.0.0
      - 33.0.2
    System Images:
      - android-33 | Google APIs ARM 64 v8a
      - android-33 | Google APIs Intel x86_64 Atom
      - android-33 | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2022.1 AI-221.6008.13.2211.9619390
  Xcode:
    version: 15.0/15A240d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 18.0.2.1
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.72.9
    wanted: 0.72.9
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: Not found
  newArchEnabled: Not found
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found
Stacktrace or Logs
There is no crash.
Reproducer

https://snack.expo.dev/@kubatyi.dev/692c3c

Screenshots and Videos

No response

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el reproductor de Snack enlazado y el punto de entrada de React Native TextInput que usa showSoftInputOnFocus en iOS; sigue el comportamiento de keyboardWillShow, keyboardDidShow, keyboardWillHide y keyboardDidHide durante focus y blur. Se considera terminado cuando la configuración indicada ya no provoca eventos de hide cuando el teclado no se ha mostrado, y el escenario queda verificado mediante una comprobación de regresión.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
ios, react-native
Área
mobile
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.