2012-01-04 2 views
1

나는 접근성 수수께끼에 몸을 던지고 있습니다.UITableView 하위 뷰에서 액세스 가능성이 손실되었습니다.

그룹화 된 스타일의 tableView와 (UIBarButtonItem을 누를 때) 일반 tableView를 모두 필요로하는 뷰가 있습니다. 그룹화 된 tableView가 기본값입니다. 나는 (그룹화 된) tableView의 서브 뷰로 일반 뷰 컨트롤러를 추가 한 다음 그룹화 된 tableView로 뒤집을 때이를 제거하여이 문제를 해결했습니다. 그것은 아주 잘 작동합니다.

지금 음성 해설을 구현 중이며 문제가 있습니다. 일반 tableView가 표시되면 (이름의 간단한 목록) 전체보기의 음성 텍스트는 "빈 목록"입니다. 무슨 일이 일어나고있는가 그룹화 된 테이블보기가 여전히 거기에 있고 빈 테이블 (0 행), 그냥 평범한 tableView 뒤에 숨어있다. (기술적으로 평범한 tableView는 그룹화 된 tableView와 동일한 CGRect를 사용하여 그룹화 된 tableView의 서브 뷰이므로 배경이 보이지 않습니다.)

내가 원하는 것은 비어있는 그룹화 된 tableView를 voiceover에서 숨기고 싶습니다. (즉, 셀 내용을 말하십시오). 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

관련 문제