0
我正在尝试创建一个可访问的应用程序。出现问题时,我想用iCarousel标准(Three-finger swipe right or left)行为。 由于iCarousel本质上不完全可访问,它只是让用户拥有用户难以处理的项目。如何为iCarousel提供可访问的滑动操作
我做了一些调查,有一些变通办法,但是 我也不想执行UIAccessibilityCustomAction因为这样不会给用户容易刷卡的能力。
我正在尝试创建一个可访问的应用程序。出现问题时,我想用iCarousel标准(Three-finger swipe right or left)行为。 由于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
我希望这可以帮助别人。