【问题标题】:React Native - secureTextEntry Disable IOS 13+ Strong Password behaviorReact Native - secureTextEntry 禁用 IOS 13+ 强密码行为
【发布时间】:2020-03-21 02:44:06
【问题描述】:

我的应用程序中有一个创建帐户表单,现在在运行 13+ 的 iOS 设备上我遇到了一个问题,如果用户在输入密码时按下“完成”键,则正常的安全密码点会被替换为以下(见下文)。如何禁用此行为,使其继续像在旧设备上一样工作?

【问题讨论】:

    标签: ios react-native


    【解决方案1】:

    试试下面的道具:

    textContentType={'oneTimeCode'}

    【讨论】:

      【解决方案2】:

      不是最佳解决方案,但添加 blurOnSubmit 和键盘 Dismiss on submit 似乎可以恢复所需的行为:

      import { Keyboard } from 'react-native'
      
      <TextInput
         ...
         blurOnSubmit={false}
         onSubmitEditing={()=> Keyboard.dismiss()}
      />
      
      

      【讨论】:

        【解决方案3】:

        仅当我使用两个TextInput 组件并将secureTextEntry 设置为true 时才会出现此问题。

        如果你不需要它,你可能想去掉第二个TextInput 组件。

        您也可以修改secureTextEntry 的值,例如当onFocus 事件被触发时,仅将其设置为true 并从那里演变。 (见:https://github.com/facebook/react-native/issues/27586#issuecomment-580739397

        【讨论】:

        • 尝试了一切,我正在使用 onSubmitEditing 来关注下一个字段,因此这是不可行的,破解 secureTextEntry 是唯一有效的方法。谢谢!!
        【解决方案4】:

        我遇到了同样的问题,将textContentType="oneTimeCode" 添加到屏幕上的所有 TextInput 有助于解决问题。

        【讨论】:

          【解决方案5】:

          目前最好的解决方案是禁用模拟器强密码功能。

          转到:

          1. 设置
          2. 密码
          3. 它会要求输入密码!输入任何内容并点击完成。
          4. 打开AutoFill Passwords,然后再次关闭。

          来源:Strong password autofill appears in iOS simulator

          【讨论】:

            【解决方案6】:

            你应该使用 textContentType 属性

            textContentType="none"如果你想禁用所有的自动填充功能。

            引用自 RN 0.64 文档

            给出键盘和系统预期的信息 用户输入的内容的语义含义。

            对于 iOS 11+,您可以将 textContentType 设置为用户名或密码 启用设备钥匙串中登录详细信息的自动填充。

            对于iOS 12+,newPassword 可用于指示新密码输入 用户可能希望保存在钥匙串中,可以使用 oneTimeCode 表示字段可以由到达的代码自动填充 短信。

            要禁用自动填充,请将 textContentType 设置为 none。

            你应该正确使用道具,否则会导致用户设备上的不当行为。

            https://reactnative.dev/docs/textinput#textcontenttype

            【讨论】:

              【解决方案7】:

              尽管我已经看到了所有的黑客和修复,但这是唯一完全解决问题的方法。 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
              

              【讨论】:

                【解决方案8】:

                添加

                autoCorrect={false}
                

                为我解决了

                【讨论】:

                  猜你喜欢
                  • 2022-10-15
                  • 2022-08-08
                  • 1970-01-01
                  • 2023-03-03
                  • 2020-02-12
                  • 2018-11-13
                  • 2019-05-28
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多