2012-01-04 8 views
1

私は自分自身をアクセシビリティの問題に取り組んできました。アクセシビリティがUITableViewのサブビューで失われました

グループ化されたスタイルのtableViewと(UIBarButtonItemを押したときに)プレーンなtableViewを必要とするビューがあります。グループ化されたtableViewがデフォルトです。私は、(グループ化された)tableViewのサブビューとしてプレーンビューコントローラを追加し、グループ化されたtableViewに戻すときにそれを削除することでこれを解決しました。それはとてもうまくいく。

私は今、ボイスオーバーを実装しており、問題に遭遇しています。プレーンなtableView(単純な名前のリスト)が表示されている場合、ボイスオーバーテキストはビュー全体の「空のリスト」です。何が起こっているのは、グループ化されたテーブルビューがまだそこにあり、単純なtableViewの後ろに隠されている空(ゼロ行)です。 (技術的には、plain tableViewはグループ化されたtableViewのサブビューであり、グループ化されたtableViewと同じCGRectを使用しているため、背景は見えません)

空のグループ化されたtableViewをvoiceoverから「隠す」 、平らな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]; 

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; 

無地のtableViewを追加します

であり、明らかな影響はない。

大変助かりました。ありがとう!

答えて

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

accessibilityElementsHidden = YESを試しましたか?

http://developer.apple.com/library/ios/documentation/uikit/reference/UIAccessibility_Protocol/Introduction/Introduction.html#//apple_ref/occ/instp/NSObject/accessibilityElementsHidden

私はあなたにもUIAccessibilityPostNotificationを使用して通知を掲示しなければならないと考えている - のいずれかのレイアウトを変更したり、画面が動作するはずです変更。

http://developer.apple.com/library/ios/documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/func/UIAccessibilityPostNotification

+0

あなたは私はSDKの@property(アトミック)BOOL accessibilityElementsHidden NS_AVAILABLE_IOS(5_0)の新しい方法を参照するために忘れていますことを理解することが行われ、 – thndrkiss

関連する問題