React Native iOS端6位短信验证码键盘自动提示失效问题求助
React Native iOS端6位短信验证码键盘自动提示失效问题求助
我正在用React Native开发一款移动端应用,其中用到了<TextInput/>组件来实现短信验证码输入功能,相关代码如下:
const [pinCode, setPinCode] = useState(''); const pinCodeRef = useRef(); // 临时处理:让用户的键盘自动唤起 useEffect(() => { const timeout = setTimeout(() => { pinCodeRef.current.focus(); }, 400); return () => clearTimeout(timeout); }, []); ... <TextInput placeholder="Enter pin-code" placeholderTextColor={commonStyles.colors.label} value={pinCode} onChangeText={val => setPinCode(val)} maxLength={6} ref={pinCodeRef} keyboardType="number-pad" autoComplete="sms-otp" textContentType="oneTimeCode" />
我设置了keyboardType="number-pad"、autoComplete="sms-otp"和textContentType="oneTimeCode"这几个属性,目的是让系统键盘能自动提示用户收到的短信验证码。
核心问题:Android端一切正常,但iOS平台上只有4位验证码能被正常提示,6位验证码完全没有自动提示的反应。
我的应用环境信息如下:
System: OS: macOS 13.4 CPU: (8) arm64 Apple M1 Pro Memory: 141.94 MB / 16.00 GB Shell: 5.9 - /bin/zsh Binaries: Node: 16.18.0 - ~/.nvm/versions/node/v16.18.0/bin/node Yarn: 1.22.19 - /opt/homebrew/bin/yarn npm: 8.19.2 - ~/.nvm/versions/node/v16.18.0/bin/npm Watchman: Not Found Managers: CocoaPods: 1.11.2 - /Users/alexander/.rvm/rubies/ruby-2.7.4/bin/pod SDKs: iOS SDK: Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1 Android SDK: Not Found IDEs: Android Studio: 2022.2 AI-222.4459.24.2221.10121639 Xcode: 14.2/14C18 - /usr/bin/xcodebuild Languages: Java: 11.0.16.1 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: 17.0.2 => 17.0.2 react-native: 0.67.4 => 0.67.4 react-native-macos: Not Found npmGlobalPackages: *react-native*: Not Found
我也试过第三方库比如react-native-otp-auto-fill,但不管是iOS还是Android端都没能实现验证码提示功能,只有上面提到的原生属性在Android上有效,iOS上却只支持4位码。另外补充一点:测试用的短信内容格式完全一致,只是验证码的长度一个是4位一个是6位。
备注:内容来源于stack exchange,提问作者alexKudryavtsev-web
相关产品推荐
相关产品推荐

