2017-08-11 5 views
0

J'essaie de faire une application accessible. Le problème se pose lorsque je voulais avoir un comportement standard (Three-finger swipe right or left) avec iCarousel. Comme iCarousel n'est pas entièrement accessible par nature, il permet simplement à l'utilisateur de faire en sorte que les éléments soient intraitables pour l'utilisateur.Comment avoir une action de balayage accessible pour iCarousel

J'ai fait quelques recherches, il y a quelques solutions de contournement mais Je ne veux pas non plus implémenter UIAccessibilityCustomAction car cela ne donnera pas à l'utilisateur la possibilité de glisser facilement.

Répondre

2

Vous pouvez remplacer et mettre en œuvre la méthode accessibilityScroll(_:) comme:

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 
    } 
} 

et après un désir (par exemple le numéro de page) dans la méthode délégué iCarousel carouselDidEndScrollingAnimation, vous pouvez également modifier la accessibilityLabel et d'autres valeurs liées à l'accessibilité ici .

func carouselDidEndScrollingAnimation(_ carousel: iCarousel) { 
    self.carousel.accessibilityLabel = accLabels[currentItemIndex] 
    self.carousel.accessibilityValue = accValues[currentItemIndex] 
    UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, 
            "item \(currentItemIndex + 1) of \(self.items.count)") 
} 

également dans viewDidLoad régler le accessibilityLabel initial ainsi que:

self.carousel.accessibilityTraits = UIAccessibilityTraitUpdatesFrequently 

J'espère que cela aide quelqu'un.