可访问性在更改iOS中textview的高度限制时无法正常工作

时间:2019-08-08 06:23:40

标签: ios voiceover uiaccessibility

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

禁用/启用辅助功能,隐藏辅助功能元素

textView.accessibilityElementsHidden = true

textView.disableAccessibility()

1 个答案:

答案 0 :(得分:0)

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

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

相应的代码(Swift 5.0,iOS 12)在下面定义:

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手势的最终结果: enter image description here

  1. 双击Button H 0以禁用文本视图可访问性并将其高度设置为0。
  2. 选择下一个元素以检查即使高度为零,文本视图上是否仍然可以聚焦。
  3. 双击Button H 44以启用文本视图辅助功能,并将其高度设置为44。
  4. 选择上一个元素以检查textview是否可以聚焦。
  5. 焦点集中在文本视图上,而无需打开/关闭VoiceOver。

按照此原理,您会注意到 VoiceOver在为iOS中的textview更改高度限制方面工作正常