20

我正在为我的应用程序添加 VoiceOver 支持。到目前为止,一切都很好,但我真的希望能够指定哪个元素是在 UIAccessibilityScreenChangedNotification 之后说出的第一个元素。我还没有看到这样做的方法。将某些东西作为摘要元素似乎并没有真正做到这一点。我错过了什么吗?

4

4 回答 4

23

这一直是完全可以做到的。

只需写一些类似的东西:

- (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 5
override func viewDidAppear(_ animated: Bool) {
    UIAccessibility.post(notification: UIAccessibility.Notification.screenChanged,
                         argument: myFirstElement)
}
于 2012-12-18T10:30:33.677 回答
2

我认为没有指定阅读顺序的 API 值,除了在启动时使用摘要元素值 - 这是设计使然。

因此,您必须测试 UIKit 元素或任何自定义控件的顺序和默认值,因为这取决于您的设计。您还可以将项目标记为不可访问元素,这样它们就不会被“读取”,默认读取的可访问元素,以及可访问元素的容器,以便您更好地控制预期的交互。我不知道选择项目是否会有所帮助。

我认为您已经在使用Accessibility Inspector来测试您的应用程序,然后再在 iOS 上进行测试。

如果您需要有关该主题的一些背景知识,Rune 的 Working With VoiceOver SupportGemmell 的 Accessibility for Apps可能值得一读。

于 2011-10-11T15:56:59.550 回答
0

这种技术对我有用。

VoiceOver 将宣布accessibleElements 数组中第一个元素的值。这可以根据您的需要进行排序。

于 2014-01-13T15:26:20.217 回答
0

使用 UIAccessibilityAnnouncementNotification 怎么样?

于 2011-09-22T05:19:41.203 回答