在 ios 中更改文本视图的高度约束时辅助功能无法正常工作

Accessibility not working properly on changing height constraint for a textview in ios

我正在为我的应用程序添加辅助功能支持,并且有一种情况我正在将 TextView 的高度限制更改为 0 和 44。 我在高度为 0 时禁用辅助功能,反之亦然。但是这样做时,当高度变为 44 时,即使 UITextView 的可访问性已打开;辅助功能光标永远不会指向 UITextView 除非我关闭并打开辅助功能。

Disabling/enabling无障碍,隐藏无障碍元素

textView.accessibilityElementsHidden = true

textView.disableAccessibility()

我在一个空白项目中尝试并实现了您的用例,如下所示:

Button H 0 导致文本视图高度为零并禁用文本视图可访问性,而 Button H 44 导致文本视图高度为 44 并启用文本视图可访问性。

对应代码(Swift5.0,iOS12)定义如下:

class SOFViewController: UIViewController {

    @IBOutlet weak var myTextView: UITextView!
    @IBOutlet weak var heightConstraint: NSLayoutConstraint!

    // Action for "BUTTON H O"
    @IBAction func heightIsZero(_ sender: UIButton) {
        heightConstraint.constant = 0
        myTextView.isAccessibilityElement = false
    }

    // Action for "BUTTON H 44"
    @IBAction func heightIsNotZero(_ sender: UIButton) {
        heightConstraint.constant = 44
        myTextView.isAccessibilityElement = true
    }
}

VoiceOver 手势的最终结果如下所示:

  1. 双击 Button H 0 以禁用文本视图辅助功能并将其高度设置为 0。
  2. Select 下一个元素来检查焦点是否仍然可以在 textview 上,尽管它的高度为零。
  3. 双击 Button H 44 启用文本视图辅助功能并将其高度设置为 44。
  4. Select 前一个元素,用于检查 textview 是否可以聚焦。
  5. 不转动 VoiceOver 就将焦点放在 textview 上 on/off。

根据这个原理,您可以注意到 VoiceOver 在 iOS.

中更改文本视图的高度约束时工作正常