2013-04-12 75 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; 
}