resolving state of error image
This commit is contained in:
parent
cc5eb5c58e
commit
949cd3292f
@ -76,15 +76,6 @@ import UIKit
|
|||||||
public var digitBoxes: [DigitBox] = []
|
public var digitBoxes: [DigitBox] = []
|
||||||
private var selectedDigitBox: 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
|
// MARK: - Computed Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -214,7 +205,6 @@ import UIKit
|
|||||||
|
|
||||||
isAccessibilityElement = false
|
isAccessibilityElement = false
|
||||||
entryFieldContainer.disableAllBorders = true
|
entryFieldContainer.disableAllBorders = true
|
||||||
usesAccessoryView = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func createDigitField() -> DigitBox {
|
@objc private func createDigitField() -> DigitBox {
|
||||||
|
|||||||
@ -36,6 +36,21 @@ import UIKit
|
|||||||
return textField
|
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
|
// MARK: - Stored Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -85,6 +100,17 @@ import UIKit
|
|||||||
textField.accessibilityValue = nil
|
textField.accessibilityValue = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if textField.isSecureTextEntry {
|
||||||
|
if !error {
|
||||||
|
accessoryView?.removeFromSuperview()
|
||||||
|
accessoryView = nil
|
||||||
|
accessoryView = standardAccessoryView
|
||||||
|
} else {
|
||||||
|
standardAccessoryView = accessoryView
|
||||||
|
accessoryView = errorImage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
super.showError = error
|
super.showError = error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,6 +163,28 @@ import UIKit
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public var textFieldTrailingConstraint: NSLayoutConstraint?
|
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
|
// MARK: - Initializers
|
||||||
@ -185,6 +233,15 @@ import UIKit
|
|||||||
entryFieldContainer.addGestureRecognizer(tap)
|
entryFieldContainer.addGestureRecognizer(tap)
|
||||||
|
|
||||||
accessibilityElements = [titleLabel, textField, feedbackLabel]
|
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) {
|
@objc open override func updateView(_ size: CGFloat) {
|
||||||
@ -337,46 +394,3 @@ extension TextEntryField {
|
|||||||
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
|
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
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user