[IOS][New Arch] TextInput dataDetectorTypes has no effect when set to `all`
まだ誰も着手していません。
- 主要言語
- C++
- スター
- 127k
- フォーク
- 25.3k
- 平均マージ
- 1日 23時間
- マージ済み PR(30日)
- 4
説明
Description
When TextInput dataDetectorTypes is set to all, it doesn't detect link, etc. But other options seem to work.
The following patch fixes the issue. The value of all is NSUIntegerMax, but unsignedIntValue converts it from 64-bit to 32-bit and causes the issue.
diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm
index 92467e2..9f45eb4 100644
--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm
+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm
@@ -293,7 +293,7 @@ UIDataDetectorTypes RCTUITextViewDataDetectorTypesFromStringVector(const std::ve
for (const auto &dataType : dataDetectorTypes) {
NSNumber *val = dataDetectorTypesMap[RCTNSStringFromString(dataType)];
if (val) {
- ret |= (UIDataDetectorTypes)val.unsignedIntValue;
+ ret |= (UIDataDetectorTypes)val.unsignedIntegerValue;
}
}
return ret;
Steps to reproduce
Add a TextInput and include a link in the text:
<TextInput multiline={true} editable={false} dataDetectorTypes={'all'} value={text}/>
The link is not displayed as a link or tappable.
React Native Version
0.80.2, 0.81
Affected Platforms
Runtime - iOS
Areas
Fabric - The New Renderer
Output of npx @react-native-community/cli info
System:
OS: macOS 26.2
CPU: (10) arm64 Apple M1 Pro
Memory: 168.83 MB / 32.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.18.0
path: ~/.volta/tools/image/node/22.18.0/bin/node
Yarn:
version: 1.22.22
path: ~/.volta/tools/image/yarn/1.22.22/bin/yarn
npm:
version: 10.9.3
path: ~/.volta/tools/image/node/22.18.0/bin/npm
Watchman:
version: 2025.05.26.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods: Not Found
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.2
- iOS 26.2
- macOS 26.2
- tvOS 26.2
- visionOS 26.2
- watchOS 26.2
Android SDK: Not Found
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2513.14007798
Xcode:
version: 26.2/17C52
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.16
path: /Users/yupeng/.sdkman/candidates/java/17.0.16-zulu/bin/javac
Ruby:
version: 3.4.5
path: /Users/yupeng/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli":
installed: 19.1.1
wanted: 19.1.1
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.80.2
wanted: 0.80.2
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: Not found
newArchEnabled: Not found
iOS:
hermesEnabled: true
newArchEnabled: true
Stacktrace or Logs
N/A
MANDATORY Reproducer
https://snack.expo.dev/@yupeng_li/textinput-datadetectortypes---all
Screenshots and Videos
No response
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm の RCTUITextViewDataDetectorTypesFromStringVector から始め、all の値がどのように変換されるかを調べます。リンク先の Snack 再現例を iOS Fabric TextInput で使用し、dataDetectorTypes={'all'} がリンクを検出してタップ可能にすることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- objective-c, react-native
- 領域
- mobile
- issue の種類
- バグ
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 活発さ
- 静か
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 70/100