隐藏元素

大多数 UIKit 类,包括 UIView,都遵守 UIAccessibilityProtocol 并默认返回正确的值。很容易理所当然地认为,设置为隐藏的 UIView 也不存在于辅助功能层次结构中,并且不会被 VoiceOver 导航。虽然此默认行为通常已足够,但有时视图层次结构中将显示视图但不可见或可导航。例如,按钮集合可能与另一个视图重叠,使得它们对有视力的用户不可见。然而,VoiceOver 仍会尝试导航它们,因为它们在技术上不会从 UIKit 中隐藏,因此仍然存在于辅助功能层次结构中。在这种情况下,你必须提示 VoiceOver 无法访问父视图。你可以通过在视图离屏时设置隐藏来显式隐藏 UIKit 中的视图来执行此操作:

myViewFullofButtons.hidden = YES;

或者,你可以将父视图保持可见,并将其子项隐藏在辅助功能层次结构中:

myViewFullofButtons.accessibilityElementsHidden = YES;

临时视图是另一个你希望隐藏可访问性层次结构中的元素同时使其对用户可见的位置。例如,当你点击音量按钮时弹出的视图对于有视力的用户是可见的,但不像普通警报那样需要引起注意。你不希望 VoiceOver 中断用户并将光标远离他们正在做的任何事情以声明新音量,特别是考虑到调节音量已经通过其发出的咔哒声提供听觉反馈。在这种情况下,你将要使用 accessibilityElementsHidden 隐藏视图。