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

我正在尝试制作一个无障碍的应用程序。 当我想用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 } } 

并在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 

我希望这可以帮助别人。

Interesting Posts