diff --git a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift index 9313f9a4..2cfcfbdc 100644 --- a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift +++ b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift @@ -13,6 +13,7 @@ public class NavigationImageButtonModel: NavigationButtonModelProtocol, Molecule public var image: String public var action: ActionModelProtocol + public var accessibilityText: String? public init(with image: String, action: ActionModelProtocol) { self.image = image @@ -23,12 +24,14 @@ public class NavigationImageButtonModel: NavigationButtonModelProtocol, Molecule case image case action case moleculeName + case accessibilityText } required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) image = try typeContainer.decode(String.self, forKey: .image) action = try typeContainer.decodeModel(codingKey: .action) + accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText) } open func encode(to encoder: Encoder) throws { @@ -36,11 +39,17 @@ public class NavigationImageButtonModel: NavigationButtonModelProtocol, Molecule try container.encode(image, forKey: .image) try container.encode(moleculeName, forKey: .moleculeName) try container.encodeModel(action, forKey: .action) + try container.encodeIfPresent(accessibilityText, forKey: .accessibilityText) } /// Convenience function that creates a BarButtonItem for the model. public func createNavigationItemButton(delegateObject: MVMCoreUIDelegateObject? = nil, additionalData: [AnyHashable: Any]? = nil) -> UIBarButtonItem { let uiImage = MVMCoreCache.shared()?.getImageFromRegisteredBundles(image) - return ImageBarButtonItem.create(with: uiImage, actionModel: action, delegateObject: delegateObject, additionalData: additionalData) + let navigationImageButton = ImageBarButtonItem.create(with: uiImage, actionModel: action, delegateObject: delegateObject, additionalData: additionalData) + if let accessibilityString = accessibilityText { + navigationImageButton.accessibilityLabel = accessibilityString + navigationImageButton.isAccessibilityElement = true + } + return navigationImageButton } }