【发布时间】:2019-06-01 20:30:05
【问题描述】:
我正在将一个按钮设置为带有隐藏图标的密码文本字段。在密码中开始编辑时会显示该图标。它是这样给出的......
func textFieldDidBeginEditing(_ textField: UITextField) {
for textfield in textFields {
if textfield.tag == 1 {
textfield.isValid = true
} else {
textfield.isActive = false
}
}
}
当textfield.isValid = true 时,didSet 在另一个类中被调用,就像这样..
var isValid: Bool = false {
didSet {
setCorrectState()
}
}
setCorrectState() 方法给出为,
func setCorrectState() {
if self.type == .password {
addPasswordViewButton()
}
}
addPasswordViewButton()方法给出如下……
private func addPasswordViewButton() {
button.setImage(UIImage(named: "hide"), for: .normal)
button.setImage(UIImage(named: "show"), for: .selected)
button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 3)
button.frame = CGRect(x: 0, y: 0, width: ((self.frame.height)), height: ((self.frame.height)))
button.addTarget(self, action: #selector(showHidePassword(_:)), for: .touchUpInside)
self.rightView = button
self.rightViewMode = .always
}
showHidePassword 给出为,
@objc func showHidePassword(_ button: UIButton) {
button.isSelected = !button.isSelected
self.isSecureTextEntry = !button.isSelected
}
我在这里面临 2 个问题..
1.当我开始在文本字段中输入文本时,会显示隐藏图标,并且输入的文本采用安全文本格式。现在,如果单击隐藏图标,则会显示显示图标,并且输入的文本将不再采用安全文本格式。现在处于这种状态本身(显示显示图标的位置),如果我删除所有字符并单击另一个文本字段(除此密码文本字段之外还有多个文本字段),然后再次返回并单击密码文本字段并开始输入字符,显示图标本身显示,而我希望隐藏图标及其功能显示在那里......
2.例如,我在密码文本字段中输入了字符“abc”。这些现在采用安全文本格式。现在显示图标,如果我点击它,我将能够看到输入的字符“abc”。现在,如果我输入“def”,我将能够看到字符“abcdef”。现在显示的图标是隐藏图标,如果我点击它,文本“abcdef”将采用安全文本格式。现在,如果我输入字符说“g”,那么理想情况下,不是接受“g”作为“abcdef”的延续,而是将“g”作为新字符输入......即整个文本“abcdef”被删除......什么可能是原因……?
【问题讨论】:
-
尽量避免使用标签。
-
基本上你的密码显示/隐藏不起作用,对吧?
-
它正在工作@AbhishekJadhav...但似乎有点不正确...
-
@user308123 你可以查看我的答案