在ios中更改textview的高度约束时,辅助功能无法正常工作

在ios中更改textview的高度约束时,辅助功能无法正常工作,ios,voiceover,uiaccessibility,Ios,Voiceover,Uiaccessibility,我正在为我的应用程序添加可访问性支持,在一个场景中,我将TextView的高度限制更改为0和44。 当高度为0时,我将禁用可访问性,反之亦然。但在这样做时,当高度变为44时,即使UITextView的可访问性已打开;辅助功能光标永远不会指向UITextView,除非我关闭并打开辅助功能 禁用/启用可访问性,隐藏可访问性元素 textView.accessibilityElementsHidden = true textView.disableAccessibility() 我在一个空白项目中

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

禁用/启用可访问性,隐藏可访问性元素

textView.accessibilityElementsHidden = true

textView.disableAccessibility()

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

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

相应的代码(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
    }
}
下面将显示画外音手势的最终结果:

  • 双击
    按钮H 0
    以禁用textview可访问性并将其高度设置为0
  • 选择下一个元素以检查textview上的焦点是否仍然可以,尽管其高度为零
  • 双击
    按钮H 44
    以启用textview可访问性并将其高度设置为44
  • 选择上一个元素以检查textview是否可以聚焦
  • 焦点在文本视图上,无需打开/关闭画外音

  • 根据这一原理,您可以注意到,VoiceOver在iOS中更改文本视图的高度约束时工作正常

    Hi@XLE\u 22,我在单击按钮时也在做同样的事情。在我的例子中,UITextField位于TableViewCell内,它在扩展时也会增加单元格的大小。另外,当我打开/关闭画外音时,它也可以正常工作。@user_aj:你在帖子中从来没有提到过TableviewCell。这肯定是你最初描述的另一个问题。对于正在寻找VoiceOver TextView解决方案的人,请接受此答案,并打开另一个专门讨论您在TableviewCell中处理TextView的实际问题的主题:请尽可能准确并添加尽可能多的详细信息以获得正确的解决方案。起草解决方案所花费的时间必须有效。。。