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
我希望這可以幫助別人。