繁体   English   中英

UITextField 上的强密码覆盖

[英]Strong password overlay on UITextField

我在UITextField上遇到了奇怪的覆盖。 我正在使用textContentType =.passwordisSecureTextEntry = true类型的字段。 我也有通过更改isSecureTextEntry = false来取消隐藏密码字符的眼睛按钮。

当我这样做时,我的密码字符是可见的,但是当我输入至少一个新字符时,会出现强密码覆盖,并且无法隐藏它。

那是什么以及如何防止显示它?

强密码覆盖

// 编辑:

我做了扩展以禁用自动填充,它的工作原理:

extension UITextField {
    func disableAutoFill() {
        if #available(iOS 12, *) {
            textContentType = .oneTimeCode
        } else {
            textContentType = .init(rawValue: "")
        }
    }
}

找到了解决这个问题的唯一方法。

textField.textContentType = .oneTimeCode

否则 iOS 12 对任何安全字段使用 PasswordAutofill (textField.isSecureTextEntry = true)。

这个解决方案来自苹果开发者论坛Yuri Petukhov的回答。

其他答案会导致向用户显示文本,这不是理想的 IMO。

要解决这个问题:

将密码字段的内容类型设置为:.oneTimePad,将字段上的安全文本输入设置为:false,然后添加以下内容(或任何适合您的风格):

func textFieldDidBeginEditing(_ textField: UITextField) { 
    if(textField == self.passwordTextField) { self.passwordTextField.isSecureTextEntry = true } }

旁注 - 我试图将 ^ 更改放在 viewWillAppear 中,但丑陋的黄色框仍然出现。

这是我发现最初保持文本安全/隐藏的唯一方法(如果需要,您可以使用显示/隐藏按钮切换它,Apple 的自动完成废话不会回来)

信用 Christian Diaz 的答案:这似乎是在 iOS 模拟器上使用安全文本字段的错误,版本为 14.0 及更高版本。 我建议使用版本 13.7 的模拟器,即 14.0 之前的版本。 如果您没有看到选择 13.7 设备的选项,请单击:

Xcode -> 首选项 -> 组件 -> iOS 13.7 模拟器

这将为 iPhone 12 之前的设备安装 iOS 13.7 模拟器。

只需确保您在模拟器的顶部栏中看到 13.7。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM