我在UITextField
上遇到了奇怪的覆盖。我在使用textContentType = .password
和isSecureTextEntry = true
类型的字段。我也有眼睛按钮,以取消隐藏密码字符与改变的isSecureTextEntry = false
。
当我这样做,我的密码字符是可见的,但当我键入至少一个新字符强密码覆盖显示,这是没有办法隐藏它。
这是什么,如何防止它的出现?
//编辑:
我已经做了扩展来禁用AutoFill,它的工作是:
extension UITextField {
func disableAutoFill() {
if #available(iOS 12, *) {
textContentType = .oneTimeCode
} else {
textContentType = .init(rawValue: "")
}
}
}
发布于 2020-12-16 02:16:07
找到了解决这个问题的唯一办法。
textField.textContentType = .oneTimeCode
否则,iOS 12将PasswordAutofill用于任何安全字段(textField.isSecureTextEntry = true)。
这个解决方案来自苹果开发者论坛尤里·佩图霍夫的答案。
发布于 2020-12-16 10:35:19
其他答案会导致文本向用户显示,这并不是理想的IMO。
要解决这个问题:
将密码字段的内容类型设置为:.oneTimePad,将字段上的安全文本条目设置为: false,然后添加以下内容(或任何对您有用的内容):
func textFieldDidBeginEditing(_ textField: UITextField) {
if(textField == self.passwordTextField) { self.passwordTextField.isSecureTextEntry = true } }
备注--我试着把这个^变化放在viewWillAppear中,但是丑陋的黄色框仍然出现。
这是我找到的唯一一种保护文本/一开始就隐藏的方法(如果你想要的话,你可以用“显示/隐藏”按钮切换它,苹果公司的自动完成的废话就不会回来了)
发布于 2021-02-06 05:55:37
请相信克里斯蒂安·迪亚兹的回答:这似乎是一个错误,在iOS模拟器上使用版本14.0及以上的安全文本字段。我建议使用13.7版本的模拟器,就在14.0之前。如果您没有看到选择13.7设备的选项,请单击:
Xcode ->首选项->组件-> iOS 13.7模拟器
这将在iOS 12之前为设备安装iPhone 13.7模拟器。
只需确保你在模拟器的顶部看到13.7。
https://stackoverflow.com/questions/58952151
复制相似问题