2012-01-04 45 views
1

我已經走進了一個無障礙難題。在UITableView子視圖中丟失的輔助功能

我有一個視圖,需要一個分組樣式的tableView和(當按UIBarButtonItem時)一個普通的tableView。分組的tableView是默認的。我通過添加一個普通的視圖控制器作爲(分組的)tableView的子視圖來解決這個問題,然後在翻轉回分組的tableView時將其刪除。它工作得很好。

我現在正在執行配音,並且遇到問題。當顯示簡單的tableView(簡單的名稱列表)時,配音文本是整個視圖的「空列表」。發生了什麼事是分組表視圖仍然存在,並且空(零行),隱藏在普通tableView後面。 (從技術上講,普通tableView是分組tableView的子視圖,使用與分組tableView相同的CGRect,所以不會看到背景。)

我想要做的是從視頻圖像中「隱藏」空的分組tableView ,所以在普通的tableView上點擊成爲活動(說細胞內容)。 isAccessiblityItem布爾似乎沒有效果。

我確實理解一個單獨的視圖,分組視圖和普通視圖都是非標準視圖,但這裏使用它是有意義的,所以更改佈局不是一種選擇。

下面是表翻轉代碼的簡化版本。

添加普通的tableView:

UITableView *plainTableView = plainViewController.tableView; 
    plainTableView.frame=groupedTableViewFrame; 
    plainTableView.delegate=self; 
    plainTableView.dataSource=self; 
    plainTableView.tag=1; 
    self.tableView.backgroundColor=[UIColor whiteColor]; 
    [self.view addSubview:plainTableView]; 
    [plainViewController release]; 

卸下普通的tableView:

for (UIView *subview in [self.view subviews]) { 
     if (subview.tag == 1) { 
      [subview removeFromSuperview]; //kills the plain view 
      self.tableView.backgroundColor=[UIColor groupTableViewBackgroundColor]; 
     } 
    } 

我已經嘗試添加普通的tableView時,如加入各種isAccessibilityItem設置:

plainTableView.isAccessibilityElement=YES; 
    self.tableView.isAccessibilityElement=NO; 

這些沒有明顯的影響。

非常感謝任何幫助。謝謝!

回答

0

我還沒有嘗試過,但可能結合設置isAccessibilityElement與發送UIAccessibilityLayoutChangedNotification或UIAccessibilityScreenChangedNotification。

1

如果子類的tableView,你可以關閉它的輔助功能有以下幾點:



@implementation NonAccessibleTableView 

-(BOOL)isAccessibilityElement { 
    return NO; 
} 

- (NSInteger)accessibilityElementCount { 
    return 0; 
} 

- (NSString *)accessibilityLabel { 
    return nil; 
} 

@end 

 

Addtionally,你可能會考慮由一個單一的視圖控制器管理的2個tableViews兄弟姐妹。

1
+0

你讓我明白,我忘了提及的SDK @property的新方法(非原子)BOOL accessibilityElementsHidden NS_AVAILABLE_IOS(5_0); – thndrkiss 2013-07-30 06:09:14