【问题标题】:How to have accessible swipe action for iCarousel如何为 iCarousel 设置可访问的滑动操作
【发布时间】:2018-01-20 11:40:51
【问题描述】:

我正在尝试制作一个可访问的应用程序。当我想对iCarousel 进行标准(Three-finger swipe right or left)行为时,问题就出现了。 由于 iCarousel 本质上不是完全可访问的,它只是让用户拥有难以处理的项目。

我做了一些研究,有一些解决方法,但是 我也不想实现UIAccessibilityCustomAction,因为这不会让用户轻松刷卡。

【问题讨论】:

    标签: ios swift voiceover icarousel uiaccessibility


    【解决方案1】:

    您可以覆盖和实现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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多