2013-04-12 42 views
1

我有UIView,可以包含两个视图之一。当我删除FromSuperview第一视图和addSubview第二视图时,我仍然可以听到隐藏视图的accessibiliyLabel。只有在1-2秒钟内,我才能听到正确的可访问性标签。 我发现当隐藏的视图状态发生变化时,这种情况很常见,可访问性可能会受挫,仍然会隐藏视图,并且不会注意到可见视图。 此外,如果在UITableViewCell中,UIButton被隐藏,然后隐藏状态更改为NO,VoiceOver会忽略它,因为它仍然隐藏。只有手动执行UIAccessibilityContainer协议才能解决上述问题VoiceOver忽略可见视图,并说隐藏视图的AccessibleLabel

否通知可以解决此问题。即使使用accessibilityElementsHidden也没有帮助。在几天

请你能推荐与此挣扎,有没有办法说的观点hierarhy改变

+0

你可以发表一些你如何添加,删除,隐藏,取消隐藏元素的代码? isAccessibilityElement有帮助吗? –

回答

2

您可以张贴UIAccessibilityScreenChangedNotification或UIAccessibilityLayoutChanged提醒UIAccessibility的看法改变了辅助功能。既然你没有张贴任何代码,我只能给你一个通用的例子,如:

UIAccessibilityPostnotification(UIAccessibilityLayoutChanged,accessibilityelement) 

...其中“accessibilityelement”将是一个按钮或文本字段或VoiceOver会切换到下一个其他辅助元素。

参考:UIKIt Reference

2

与第三方侧面菜单库恰好碰到了这个自己,只好用accessibilityElementsHidden修复它。我第一次尝试利用accessibilityViewIsModal属性,但只适用于兄弟视图。

#pragma mark - IIViewDeckControllerDelegate 

- (void)viewDeckController:(IIViewDeckController *)viewDeckController didOpenViewSide:(IIViewDeckSide)viewDeckSide animated:(BOOL)animated 
{ 
    if (viewDeckSide == IIViewDeckLeftSide) { 
     [self.topViewController.view endEditing:YES]; 
     self.viewDeckController.leftController.view.accessibilityElementsHidden = NO; 
    } 
} 

- (void)viewDeckController:(IIViewDeckController *)viewDeckController didCloseViewSide:(IIViewDeckSide)viewDeckSide animated:(BOOL)animated 
{ 
    self.viewDeckController.leftController.view.accessibilityElementsHidden = YES; 
}