resolving state of error image

This commit is contained in:
Kevin G Christiano 2020-04-13 17:07:28 -04:00
parent cc5eb5c58e
commit 949cd3292f
2 changed files with 58 additions and 54 deletions

View File

@ -76,15 +76,6 @@ import UIKit
public var digitBoxes: [DigitBox] = []
private var selectedDigitBox: DigitBox?
public lazy var errorImage: UIImageView = {
let image = MVMCoreUIUtility.imageNamed("alert_standard")
let imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.heightAnchor.constraint(equalToConstant: 20).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 20).isActive = true
return imageView
}()
//--------------------------------------------------
// MARK: - Computed Properties
//--------------------------------------------------
@ -214,7 +205,6 @@ import UIKit
isAccessibilityElement = false
entryFieldContainer.disableAllBorders = true
usesAccessoryView = false
}
@objc private func createDigitField() -> DigitBox {

View File

@ -35,7 +35,22 @@ import UIKit
textField.smartInsertDeleteType = .no
return textField
}()
private var standardAccessoryView: UIView?
public var accessoryView: UIView? {
didSet { accessoryView == nil ? unconstrainAccessoryView() : constrainAccessoryView() }
}
public lazy var errorImage: UIImageView = {
let image = MVMCoreUIUtility.imageNamed("alert_standard")
let imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.heightAnchor.constraint(equalToConstant: 20).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 20).isActive = true
return imageView
}()
//--------------------------------------------------
// MARK: - Stored Properties
//--------------------------------------------------
@ -85,6 +100,17 @@ import UIKit
textField.accessibilityValue = nil
}
if textField.isSecureTextEntry {
if !error {
accessoryView?.removeFromSuperview()
accessoryView = nil
accessoryView = standardAccessoryView
} else {
standardAccessoryView = accessoryView
accessoryView = errorImage
}
}
super.showError = error
}
}
@ -137,6 +163,28 @@ import UIKit
//--------------------------------------------------
public var textFieldTrailingConstraint: NSLayoutConstraint?
public var accessoryViewTrailingConstraint: NSLayoutConstraint?
public func constrainAccessoryView() {
guard let accessoryView = accessoryView else { return }
entryFieldContainer.addSubview(accessoryView)
textFieldTrailingConstraint?.isActive = false
textFieldTrailingConstraint = accessoryView.leadingAnchor.constraint(equalTo: textField.trailingAnchor, constant: Padding.Two)
textFieldTrailingConstraint?.isActive = true
accessoryViewTrailingConstraint = entryFieldContainer.trailingAnchor.constraint(equalTo: accessoryView.trailingAnchor, constant: Padding.Four)
accessoryViewTrailingConstraint?.isActive = true
accessoryView.centerYAnchor.constraint(equalTo: entryFieldContainer.centerYAnchor).isActive = true
}
public func unconstrainAccessoryView() {
textFieldTrailingConstraint = entryFieldContainer.trailingAnchor.constraint(equalTo: textField.trailingAnchor, constant: Padding.Four)
textFieldTrailingConstraint?.isActive = true
}
//--------------------------------------------------
// MARK: - Initializers
@ -185,6 +233,15 @@ import UIKit
entryFieldContainer.addGestureRecognizer(tap)
accessibilityElements = [titleLabel, textField, feedbackLabel]
// TODO: Remove these two lines.
let tapErr = UITapGestureRecognizer(target: self, action: #selector(tapForError))
titleLabel.addGestureRecognizer(tapErr)
}
// TODO: Remove this func
@objc func tapForError() {
showError.toggle()
}
@objc open override func updateView(_ size: CGFloat) {
@ -337,46 +394,3 @@ extension TextEntryField {
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
}
}
// FOR isSecureEntry state
/*
public var accessoryViewTrailingConstraint: NSLayoutConstraint?
// textFieldTrailingConstraint?.isActive = false
// textFieldTrailingConstraint = errorImage.leadingAnchor.constraint(equalTo: textField.trailingAnchor, constant: Padding.Two)
// textFieldTrailingConstraint?.isActive = true
//
// container.trailingAnchor.constraint(equalTo: errorImage.trailingAnchor, constant: Padding.Four).isActive = true
// errorImage.centerYAnchor.constraint(equalTo: container.centerYAnchor).isActive = true
public lazy var errorImage: UIImageView = {
let image = MVMCoreUIUtility.imageNamed("alert_standard")
let imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.heightAnchor.constraint(equalToConstant: 20).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 20).isActive = true
return imageView
}()
public func constrainAccessoryView() {
entryFieldContainer.addSubview(errorImage)
textFieldTrailingConstraint?.isActive = false
textFieldTrailingConstraint = errorImage.leadingAnchor.constraint(equalTo: textField.trailingAnchor, constant: Padding.Two)
textFieldTrailingConstraint?.isActive = true
accessoryViewTrailingConstraint = entryFieldContainer.trailingAnchor.constraint(equalTo: errorImage.trailingAnchor, constant: Padding.Four)
accessoryViewTrailingConstraint?.isActive = true
errorImage.centerYAnchor.constraint(equalTo: entryFieldContainer.centerYAnchor).isActive = true
}
public func unconstrainAccessoryView() {
textFieldTrailingConstraint = entryFieldContainer.trailingAnchor.constraint(equalTo: textField.trailingAnchor, constant: Padding.Four)
textFieldTrailingConstraint?.isActive = true
}
*/