在 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 手势的最终结果如下所示:
- 双击
Button H 0
以禁用文本视图辅助功能并将其高度设置为 0。
- Select 下一个元素来检查焦点是否仍然可以在 textview 上,尽管它的高度为零。
- 双击
Button H 44
启用文本视图辅助功能并将其高度设置为 44。
- Select 前一个元素,用于检查 textview 是否可以聚焦。
- 不转动 VoiceOver 就将焦点放在 textview 上 on/off。
根据这个原理,您可以注意到 VoiceOver 在 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 手势的最终结果如下所示:
- 双击
Button H 0
以禁用文本视图辅助功能并将其高度设置为 0。 - Select 下一个元素来检查焦点是否仍然可以在 textview 上,尽管它的高度为零。
- 双击
Button H 44
启用文本视图辅助功能并将其高度设置为 44。 - Select 前一个元素,用于检查 textview 是否可以聚焦。
- 不转动 VoiceOver 就将焦点放在 textview 上 on/off。
根据这个原理,您可以注意到 VoiceOver 在 iOS.
中更改文本视图的高度约束时工作正常