【发布时间】:2020-03-21 02:44:06
【问题描述】:
我的应用程序中有一个创建帐户表单,现在在运行 13+ 的 iOS 设备上我遇到了一个问题,如果用户在输入密码时按下“完成”键,则正常的安全密码点会被替换为以下(见下文)。如何禁用此行为,使其继续像在旧设备上一样工作?
【问题讨论】:
标签: ios react-native
我的应用程序中有一个创建帐户表单,现在在运行 13+ 的 iOS 设备上我遇到了一个问题,如果用户在输入密码时按下“完成”键,则正常的安全密码点会被替换为以下(见下文)。如何禁用此行为,使其继续像在旧设备上一样工作?
【问题讨论】:
标签: ios react-native
试试下面的道具:
textContentType={'oneTimeCode'}
【讨论】:
不是最佳解决方案,但添加 blurOnSubmit 和键盘 Dismiss on submit 似乎可以恢复所需的行为:
import { Keyboard } from 'react-native'
<TextInput
...
blurOnSubmit={false}
onSubmitEditing={()=> Keyboard.dismiss()}
/>
【讨论】:
仅当我使用两个TextInput 组件并将secureTextEntry 设置为true 时才会出现此问题。
如果你不需要它,你可能想去掉第二个TextInput 组件。
您也可以修改secureTextEntry 的值,例如当onFocus 事件被触发时,仅将其设置为true 并从那里演变。
(见:https://github.com/facebook/react-native/issues/27586#issuecomment-580739397)
【讨论】:
我遇到了同样的问题,将textContentType="oneTimeCode" 添加到屏幕上的所有 TextInput 有助于解决问题。
【讨论】:
目前最好的解决方案是禁用模拟器强密码功能。
转到:
AutoFill Passwords,然后再次关闭。【讨论】:
你应该使用 textContentType 属性
textContentType="none"如果你想禁用所有的自动填充功能。
引用自 RN 0.64 文档
给出键盘和系统预期的信息 用户输入的内容的语义含义。
对于 iOS 11+,您可以将 textContentType 设置为用户名或密码 启用设备钥匙串中登录详细信息的自动填充。
对于iOS 12+,newPassword 可用于指示新密码输入 用户可能希望保存在钥匙串中,可以使用 oneTimeCode 表示字段可以由到达的代码自动填充 短信。
要禁用自动填充,请将 textContentType 设置为 none。
你应该正确使用道具,否则会导致用户设备上的不当行为。
【讨论】:
尽管我已经看到了所有的黑客和修复,但这是唯一完全解决问题的方法。 https://github.com/facebook/react-native/issues/21911#issuecomment-833144889
<TextInput secureTextEntry={true}/> // input1
<TextInput style={{height: 0.1}}/> // a dummy that jammed in between two secure texts
<TextInput secureTextEntry={true}/> // input2
【讨论】:
添加
autoCorrect={false}
为我解决了
【讨论】: