如何为 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
我希望这对某人有所帮助。
我正在尝试制作一个易于访问的应用程序。当我想要标准 (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
我希望这对某人有所帮助。