React Native iOS端TextInput能否同时设置两个textContentType属性?
React Native iOS端TextInput多textContentType配置问题解答
你当前传入逗号拼接字符串'emailAddress,username'的写法不符合iOS平台规范,完全无法生效,也不能实现你预期的双功能效果,具体说明如下:
- iOS底层对应
textContentType的原生属性UITextContentType是单值枚举类型,仅支持传入单个合法枚举值,传入拼接的多值字符串时系统无法识别,会直接忽略该属性配置。 - 你需要的「邮箱地址输入联想」+「系统Keychain已保存凭证调取」两个效果,不需要配置多个
textContentType值,直接传入emailAddress即可同时覆盖两个场景:- 输入阶段系统会自动拉取本地留存的邮箱地址给出联想补全建议
- 输入框会自动触发系统密码自动填充能力,只要你App配置了正确的关联域名,系统就会在输入区上方弹出Keychain中对应服务保存的邮箱类账号凭证供用户选择填充
修正后的可正常运行的代码如下:
<TextInput style={styles.modalInput} placeholder="Email" keyboardType="email-address" textContentType="emailAddress" placeholderTextColor='black' autoCapitalize='none' autoCorrect={false} onChangeText={(value) => dispatch(setEmail(value))} />
额外注意事项:
- 不要尝试给
textContentType传入数组、多值拼接字符串等格式的参数,React Native层的类型校验会直接抛出错误,iOS原生层也不识别多值配置 - 如果钥匙串自动填充功能未正常触发,请检查App是否配置了正确的Associated Domains(关联域名),确保和你凭证存储对应的服务端域名匹配,否则系统无法读取到对应域名下保存的账号凭证。
内容的提问来源于stack exchange,提问作者Eres Keanu Carreon
相关产品推荐
相关产品推荐

