如何为 iCarousel 提供可访问的滑动操作

How to have accessible swipe action for iCarousel

我正在尝试制作一个易于访问的应用程序。当我想要标准 (Three-finger swipe right or left) behavior with iCarousel. 由于 iCarousel 本质上不是完全可访问的,它只是让用户拥有难以处理的项目。

我做了一些研究,有一些解决方法但是 我也不想实施 UIAccessibilityCustomAction 因为这不会给用户轻松滑动的能力。

您可以覆盖并实施 accessibilityScroll(_:) 方法为:

extension iCarousel {
    override open func accessibilityScroll(_ direction: UIAccessibilityScrollDirection) -> Bool {
        super.accessibilityScroll(direction)

        if direction == UIAccessibilityScrollDirection.left {
            self.scroll(byOffset: 1, duration: 1.0)
        }
        if direction == UIAccessibilityScrollDirection.right {
            self.scroll(byOffset: -1, duration: 1.0)
        }
        return true
    }
}

和post iCarousel 委托方法 carouselDidEndScrollingAnimation 中的需求(例如页码),您也可以在此处更改 accessibilityLabel 和其他可访问性相关值。

func carouselDidEndScrollingAnimation(_ carousel: iCarousel) {
    self.carousel.accessibilityLabel = accLabels[currentItemIndex]
    self.carousel.accessibilityValue = accValues[currentItemIndex]
    UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
                                    "item \(currentItemIndex + 1) of \(self.items.count)")
}

还在 viewDidLoad 中设置初始 accessibilityLabel 以及:

self.carousel.accessibilityTraits = UIAccessibilityTraitUpdatesFrequently

我希望这对某人有所帮助。