Значения текстового поля очищаются после переключения текстового поля. Ниже приведен мой код. < /P>
Давайте рассмотрим случай TxtexistingPassword Wield: < /p>
Изначально я ввел «тест», и поле безопасно (пароль скрыт). «ER» для этого, поэтому текст стал «тестером» - что является правильно. /> ожидаемое поведение: < /strong> должно добавить «1» к существующему тексту «тестеру», что приводит к «tester1». < /p>
Код: Выделить всё
enum fieldType {
case existingPass
case newPass
case confPass
}
override func viewDidLoad() {
super.viewDidLoad()
configurePasswordToggle(type: .existingPass)
configurePasswordToggle(type: .newPass)
configurePasswordToggle(type: .confPass)
}
extension ChangePasswordView {
private func configurePasswordToggle(type: fieldType) {
let toggleButton = UIButton(type: .custom)
toggleButton.setImage(#imageLiteral(resourceName: "ic_secure"), for: .normal)
toggleButton.setImage(#imageLiteral(resourceName: "ic_unsecure"), for: .selected)
switch type {
case .existingPass:
toggleButton.addTarget(self,
action: #selector(toggleExistingPasswordVisibility(_:)),
for: .touchUpInside)
case .newPass:
toggleButton.addTarget(self,
action: #selector(toggleNewPasswordVisibility(_:)),
for: .touchUpInside)
case .confPass:
toggleButton.addTarget(self,
action: #selector(toggleConfrimPasswordVisibility(_:)),
for: .touchUpInside)
}
toggleButton.frame = CGRect(x: 0,
y: 0,
width: 30,
height: 30)
let containerView = UIView(frame: CGRect(x: 0,
y: 0,
width: toggleButton.frame.width + 10,
height: toggleButton.frame.height))
containerView.addSubview(toggleButton)
switch type {
case .existingPass:
txtExistingPassword.rightView = containerView
txtExistingPassword.rightViewMode = .always
case .newPass:
txtNewPassword.rightView = containerView
txtNewPassword.rightViewMode = .always
case .confPass:
txtConfirPassword.rightView = containerView
txtConfirPassword.rightViewMode = .always
}
}
@objc private func toggleExistingPasswordVisibility(_ sender: UIButton) {
sender.isSelected.toggle()
txtExistingPassword.isSecureTextEntry.toggle()
}
@objc private func toggleNewPasswordVisibility(_ sender: UIButton) {
sender.isSelected.toggle()
txtNewPassword.isSecureTextEntry.toggle()
}
@objc private func toggleConfrimPasswordVisibility(_ sender: UIButton) {
sender.isSelected.toggle()
txtConfirPassword.isSecureTextEntry.toggle()
}
}
Код: Выделить всё
var visibility = true
@objc private func togglePasswordVisibility(_ sender: UIButton) {
if visibility {
txtExistingPassword.isSecureTextEntry = false
} else {
txtExistingPassword.isSecureTextEntry = true
}
visibility = !visibility
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... et-cleared