我正在为我的应用程序添加 VoiceOver 支持。到目前为止,一切都很好,但我真的希望能够指定哪个元素是在 UIAccessibilityScreenChangedNotification 之后说出的第一个元素。我还没有看到这样做的方法。将某些东西作为摘要元素似乎并没有真正做到这一点。我错过了什么吗?
4 回答
这一直是完全可以做到的。
只需写一些类似的东西:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
self.myFirstElement);
}
@end
这适用于 UIAccessibilityScreenChangedNotification 和 UIAccessibilityLayoutChangedNotification。更多信息: http: //developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAccessibility_Protocol/Introduction/Introduction.html#//apple_ref/c/data/UIAccessibilityLayoutChangedNotification 在这里: http://developer。 apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/Accessibility/AccessibilityfromtheViewControllersPerspective.html#//apple_ref/doc/uid/TP40007457-CH2-SW1
现在为 Swift 5override func viewDidAppear(_ animated: Bool) {
UIAccessibility.post(notification: UIAccessibility.Notification.screenChanged,
argument: myFirstElement)
}
我认为没有指定阅读顺序的 API 值,除了在启动时使用摘要元素值 - 这是设计使然。
因此,您必须测试 UIKit 元素或任何自定义控件的顺序和默认值,因为这取决于您的设计。您还可以将项目标记为不可访问元素,这样它们就不会被“读取”,默认读取的可访问元素,以及可访问元素的容器,以便您更好地控制预期的交互。我不知道选择项目是否会有所帮助。
我认为您已经在使用Accessibility Inspector来测试您的应用程序,然后再在 iOS 上进行测试。
如果您需要有关该主题的一些背景知识,Rune 的 Working With VoiceOver Support和Gemmell 的 Accessibility for Apps可能值得一读。
这种技术对我有用。
VoiceOver 将宣布accessibleElements 数组中第一个元素的值。这可以根据您的需要进行排序。
使用 UIAccessibilityAnnouncementNotification 怎么样?