我希望每次在VoiceOver处于活动状态时聚焦不同的元素时调用方法。我希望这会有一些UIAccessibilityNotification
,但我似乎无法找到。
最终,我的目标是在阅读辅助功能标签之前添加其他条件。例如,而不是说(默认情况下)"如果UIButton
成为焦点:阅读标签",我希望能够说出"何时{{1} }变得专注且UIButton
的背景颜色为蓝色:读取标签"。
所以我的问题是:如何在阅读标签之前添加其他条件,或者在新元素聚焦时收到通知?
答案 0 :(得分:2)
您无法明确告知用户何时移动VoiceOver光标(就像您可以告诉有视力的用户所在的位置一样)。
对于您想要的行为,您有两种选择:
accessibilityLabel
设置为适当的值。子类UIButton
并覆盖其accessibilityLabel
getter方法:
- (NSString *) accessibilityLabel {
if (SOME_CONDITION) {
return @"Hooray!";
} else {
return @"Womp womp";
}
}
如果您需要完全停用某个项目,而不是返回nil
或空字符串,则应将其accessibilityElementsHidden
属性设置为YES
。
答案 1 :(得分:0)
您可以使用UIAccessibilityFocus
协议来检测辅助功能客户端(包括VoiceOver)的焦点变化。请注意,UIAccessibilityFocus
是一个非正式协议,每个辅助功能元素必须独立实现。
也就是说,对于您的用例,Aaron建议在每种情况下返回不同的accessibilityLabel
。