如何知道何时将聚焦元素重新聚焦在Voice Over(iOS)上

时间:2019-06-19 06:14:27

标签: ios swift voiceover

当再次点击重点旁白元素时,我想做些事情。

函数accessibilityElementDidBecomeFocused()仅在元素首次聚焦时被调用。

当我们再次单击同一聚焦元素时,将不会调用此函数。有人可以建议解决方案吗?

1 个答案:

答案 0 :(得分:0)

  

有人可以提出一些解决方案吗?

以下是一些想法,可以在同一聚焦元素上检测一次轻击:

  • 创建一个变量nbSelections,该变量将计算单次点击的次数。
  • 在元素上创建点击手势识别器以增加点击次数,例如:

    let tap = UITapGestureRecognizer(target: self,
                                     action: #selector(addTapCounter(info:)))
    tap.numberOfTapsRequired = 1
    self.addGestureRecognizer(tap)
    
  • 添加允许直接在元素上捕捉简单点击的特征:

    override var accessibilityTraits: UIAccessibilityTraits {
        get { return .allowsDirectInteraction }
        set {  }
    }
    
  • 在元素失去焦点时设置nbSelections = 0

    override open func accessibilityElementDidLoseFocus() { nbSelections = 0 }
    

将这些想法与UIAccessibilityFocus informal protocol结合起来可能是达成目标的不错的研究方向。

但是,此技术解决方案假定直接点击是直接在元素本身上 (特定于特征),而不是在其他任何地方(我不