[英]Strong password overlay on UITextField
我在UITextField
上遇到了奇怪的覆盖。 我正在使用textContentType =.password
和isSecureTextEntry = 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.