diff --git a/MVMCoreUI/Atomic/Organisms/Carousel.swift b/MVMCoreUI/Atomic/Organisms/Carousel.swift index e507a999..0ace27ff 100644 --- a/MVMCoreUI/Atomic/Organisms/Carousel.swift +++ b/MVMCoreUI/Atomic/Organisms/Carousel.swift @@ -76,6 +76,7 @@ open class Carousel: View { open override func layoutSubviews() { super.layoutSubviews() // Accounts for any collection size changes + carouselAccessibilityElement?.accessibilityFrameInContainerSpace = collectionView.frame DispatchQueue.main.async { self.layoutCollection() } @@ -144,7 +145,7 @@ open class Carousel: View { super.set(with: model, delegateObject, additionalData) guard let carouselModel = model as? CarouselModel else { return } - + accessibilityLabel = carouselModel.accessibilityText collectionView.backgroundColor = backgroundColor collectionView.layer.borderColor = backgroundColor?.cgColor collectionView.layer.borderWidth = (carouselModel.border ?? false) ? 1 : 0 @@ -306,11 +307,7 @@ open class Carousel: View { } /// Accessibility element that allows for adjustable carousel. - private lazy var carouselAccessibilityElement: CarouselAccessibilityElement = { - let accessibilityElement = CarouselAccessibilityElement(accessibilityContainer: self) - accessibilityElement.accessibilityFrameInContainerSpace = collectionView.frame - return accessibilityElement - }() + private var carouselAccessibilityElement: CarouselAccessibilityElement? private var _accessibilityElements: [Any]? @@ -325,6 +322,16 @@ open class Carousel: View { guard _accessibilityElements == nil else { return _accessibilityElements } + + // Create the accessibility helper if needed. + let carouselAccessibilityElement: CarouselAccessibilityElement + if let theCarouselAccessibilityElement = self.carouselAccessibilityElement { + carouselAccessibilityElement = theCarouselAccessibilityElement + } else { + carouselAccessibilityElement = CarouselAccessibilityElement(accessibilityContainer: self) + carouselAccessibilityElement.accessibilityFrameInContainerSpace = collectionView.frame + self.carouselAccessibilityElement = carouselAccessibilityElement + } if let currentCell = collectionView.cellForItem(at: IndexPath(row: currentIndex, section: 0)) { _accessibilityElements = [currentCell, carouselAccessibilityElement]