是否可以分配一个辅助function的UILabel?

在我们当前的用户界面中,在某些标签旁边,我们有一个帮助提示button,单击时可以解释标签引用的详细信息。 因此,VoiceOver将这两个项目标识为单独的辅助function项目。

但是,在使用可访问性时,我们希望我们能够在标签本身中做所有事情。 这样,当标签变得焦点时,用户将在这里“账户价值,$ 20(accessibilityLabel),双击帮助(accessibilityHint)'

但是,与button不同,标签没有与其关联的操作,所以我不确定如何连线实际触发无障碍手势,指示我想要做某事。

在将所有标签转换为button之后,是否有任何方法可以在标签上收听可访问性“操作”方法?

我目前的解决方法是只能访问帮助提示button,然后将所有相关信息移动到其可访问性属性,但这似乎是代码味道,因为开发人员在更新代码时很容易错过。

试过把UITapGestureRecognizer添加到Labels

就像是 :

 let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapResponse:") tapGesture.numberOfTapsRequired = 1 sampleLabel.userInteractionEnabled = true sampleLabel.addGestureRecognizer(tapGesture) func tapResponse(recognizer: UITapGestureRecognizer) { print("tap") } 

好吧,这比我想象的要容易。 为了使UILabel响应类似于button的可访问性操作,您只需实现一个UITapGestureRecognizer。 Accessibility框架就像其他UIView一样使用它。

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

一旦你这样做,你的标签将响应无障碍操作。