react / react/react-native

[iOS] Toggling `secureTextEntry` prop causes cursor to jump to the end of TextInput

オープン
#38,676 コメント 12 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Component: TextInput Issue: Author Provided Repro Needs: Attention Newer Patch Available Platform: iOS Resolution: PR Submitted
主要言語
C++
スター
127k
フォーク
25.3k
平均マージ
1日 23時間
マージ済み PR(30日)
4

説明

Description

In iOS, when the secureTextEntry prop is toggled while the TextInput is focused, the cursor position always jumps to the end of the input no matter what the previous position was.

React Native Version

0.71.2

Output of npx react-native info

System:
OS: macOS 13.4.1
CPU: (10) arm64 Apple M1 Pro
Memory: 89.78 MB / 32.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 16.15.1 - ~/.nvm/versions/node/v16.15.1/bin/node
Yarn: 1.22.15 - ~/.nvm/versions/node/v16.15.1/bin/yarn
npm: 8.11.0 - ~/.nvm/versions/node/v16.15.1/bin/npm
Watchman: Not Found
Managers:
CocoaPods: Not Found
SDKs:
iOS SDK:
Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4
Android SDK:
API Levels: 28, 29, 30, 31, 32, 33
Build Tools: 28.0.3, 30.0.3, 33.0.0
System Images: android-31 | Android TV ARM 64 v8a, android-31 | Google APIs ARM 64 v8a, android-32 | Google Play ARM 64 v8a, android-33 | Google APIs ARM 64 v8a
Android NDK: 21.3.6528147
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9514443
Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild
Languages:
Java: 17.0.8 - /usr/bin/javac
npmPackages:
@expensify/react-native: 0.71.2-alpha.3
@react-native-community/cli: Not Found
react: 18.2.0 => 18.2.0
react-native: Not Found
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found

Steps to reproduce
  1. Write something on a TextInput, in iOS
  2. Move the cursor position to a different position
  3. Toggle secureTextEntry
  4. Notice that the cursor jumped to the end of the input
Snack, screenshot, or link to a repository

Snack: https://snack.expo.dev/IL4nCHYAQ

Demo:
https://github.com/facebook/react-native/assets/48553277/afd61900-bcd6-47d2-9d38-120c3611e885

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、リンクされた Snack を iOS で実行し、フォーカスされている TextInput で secureTextEntry を切り替えたときのカーソルのジャンプを再現します。次に、iOS の TextInput 実装とその選択範囲の処理を追跡します。prop の変更後もカーソルが以前の位置に留まれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
ios, react-native
領域
mobile
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。