Iphone 以编程方式确定VoiceOver读取UIView项的顺序
我正在使我的iPhone应用程序可访问。画外音给人留下了深刻的印象。当用户使用VoiceOver时,它会自动读取屏幕上的项目,并允许用户双击屏幕上的任何位置以选择该项目。但是,我希望VoiceOver以特定的顺序阅读项目,但它总是以UINavigationBar项目开始,包括back按钮。我不希望这些项目不被阅读,我只想从一个特定的项目开始。是否存在与“firstResponder”等效的画外音?在某些情况下,在一个项目上设置UIAccessibilityTraitSummaryElement可以做到这一点。(我的游戏似乎太有活力了,对此没有多大帮助。)是的 NSObject实现了一个名为Iphone 以编程方式确定VoiceOver读取UIView项的顺序,iphone,ios,ipod-touch,first-responder,voiceover,Iphone,Ios,Ipod Touch,First Responder,Voiceover,我正在使我的iPhone应用程序可访问。画外音给人留下了深刻的印象。当用户使用VoiceOver时,它会自动读取屏幕上的项目,并允许用户双击屏幕上的任何位置以选择该项目。但是,我希望VoiceOver以特定的顺序阅读项目,但它总是以UINavigationBar项目开始,包括back按钮。我不希望这些项目不被阅读,我只想从一个特定的项目开始。是否存在与“firstResponder”等效的画外音?在某些情况下,在一个项目上设置UIAccessibilityTraitSummaryElement可
UIAccessibilityContainer
的协议。它使您能够使用以下三种方法自定义容器行为:
accessibilitylementcount
accessibilitylementindex:
indexOfAccessibilityElement:
isAccessibilityElement:
并返回NO
- (BOOL)isAccessibilityElement {
return NO;
}
示例实现 我建议您要么按照希望视图显示的顺序设置所有视图的数组,要么使用
标记
属性(如果您不将其用于任何其他内容)。协议的实现变得超级简单
元素数组
我假设您有一个名为accessibleElements
的数组,它以正确的顺序存储元素
- (NSInteger)accessibilityElementCount {
return self.accessibleElements.count;
}
- (id)accessibilityElementAtIndex:(NSInteger)index {
return self.accessibleElements[index];
}
- (NSInteger)indexOfAccessibilityElement:(id)element {
return [self.accessibleElements indexOfObject:element];
}
标记元素
我假设您的子视图从0一直标记到子视图的数量
- (NSInteger)accessibilityElementCount {
return self.subviews.count;
}
- (id)accessibilityElementAtIndex:(NSInteger)index {
// Not that self should have a tag<0 or tag>count otherwise it will
// return itself for that tag instead of the element you want it to.
return [self viewWithTag:index];
}
- (NSInteger)indexOfAccessibilityElement:(id)element {
return ((UIView *)element).tag;
}
-(NSInteger)可访问性YelementCount{
返回self.subviews.count;
}
-(id)可访问性指数:(NSInteger)索引{
//不是说self应该有标记计数,否则它会
//为该标记返回自身,而不是您希望它返回的元素。
返回[self-viewWithTag:index];
}
-(NSInteger)indexOfAccessibilityElement:(id)元素{
返回((UIView*)元素).tag;
}
或者可能不是-我可能误解了UIAccessibilityTraitSummaryElement,它可能只是屏幕输入时所说的内容。这与重点项目不同。