2016-09-06 1 views
1

Nous avons une sous-classe UIView personnalisée qui, pour des raisons indépendantes de la portée de cette discussion, ne peut pas simplement être convertie en sous-classe UIButton, mais nous voulons toujours qu'elle réponde aux actions d'accessibilité comme s'il s'agissait d'un bouton. Nous savons que nous pouvons définir le trait 'Button' et VoiceOver l'annoncera comme tel, mais comment le faites-vous réellement répondre à l'utilisateur 'activant' le contrôle en tapotant deux fois l'écran quand il a le curseur VoiceOver dessus?Comment faire en sorte qu'une sous-classe UIView qui n'hérite pas d'UIButton ne réponde pas au geste d'activation de VoiceOver?

Répondre

1

Ok, c'était plus facile que je ne le pensais. Pour que n'importe quel UIView réponde aux actions d'accessibilité, implémentez simplement un UITapGestureRecognizer et gérez comme n'importe quel autre événement de tap. Voici comment ...

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(labelTapped)) 
    testLabel.userInteractionEnabled = true 
    testLabel.addGestureRecognizer(tapGestureRecognizer) 

Une fois que vous faites cela, votre étiquette répondra aux actions d'accessibilité.