52 lines
1.3 KiB
Swift
52 lines
1.3 KiB
Swift
|
//
|
||
|
// ShowHidePasswordView.swift
|
||
|
// NetNewsWire-iOS
|
||
|
//
|
||
|
// Created by Maurice Parker on 10/8/19.
|
||
|
// Copyright © 2019 Ranchero Software. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import UIKit
|
||
|
import SwiftUI
|
||
|
|
||
|
class ShowHidePasswordView: UIView {
|
||
|
|
||
|
@IBOutlet weak var passwordTextField: BindingTextField!
|
||
|
@IBOutlet weak var showHideButton: UIButton!
|
||
|
|
||
|
@IBAction func toggleShowHideButton(_ sender: Any) {
|
||
|
if passwordTextField.isSecureTextEntry {
|
||
|
passwordTextField.isSecureTextEntry = false
|
||
|
showHideButton.setTitle(NSLocalizedString("Hide", comment: "Hide"), for: .normal)
|
||
|
} else {
|
||
|
passwordTextField.isSecureTextEntry = true
|
||
|
showHideButton.setTitle(NSLocalizedString("Show", comment: "Show"), for: .normal)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
class BindingTextField: UITextField, UITextFieldDelegate {
|
||
|
|
||
|
var bindingString: Binding<String>? = nil
|
||
|
|
||
|
override init(frame: CGRect) {
|
||
|
super.init(frame: frame)
|
||
|
delegate = self
|
||
|
}
|
||
|
|
||
|
required init?(coder: NSCoder) {
|
||
|
super.init(coder: coder)
|
||
|
delegate = self
|
||
|
}
|
||
|
|
||
|
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
|
||
|
if let currentValue = textField.text as NSString? {
|
||
|
let proposedValue = currentValue.replacingCharacters(in: range, with: string)
|
||
|
bindingString?.wrappedValue = proposedValue
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
}
|