5

Tôi đang cố gắng để có được tiếng nói qua làm việc với một cái nhìn OpenGL, đặc biệt là từ khuôn khổ cocos2d.Tùy chỉnh UIView Không hiển thị khả năng truy cập trên Voice Over

Từ hướng tiếp cận của Apple Tôi đi theo phần này: Make the Contents of Custom Container Views Accessible

Tôi đã subclassed xem (CCGLView cho người cocos2d), mà là một UIView, để thực hiện các giao thức UIAccessibilityContainer không chính thức.

thực hiện UIAccessibilityContainer trong UIView subclassed của tôi:

-(NSArray *)accessibilityElements{ 
return [self.delegate accessibleElements]; 
} 

-(BOOL)isAccessibilityElement{ 
return NO; 
} 
-(NSInteger)accessibilityElementCount{ 
return [self accessibilityElements].count; 
} 
-(NSInteger)indexOfAccessibilityElement:(id)element{ 
return [[self accessibilityElements] indexOfObject:element]; 
} 
-(id)accessibilityElementAtIndex:(NSInteger)index{ 
return [[self accessibilityElements] objectAtIndex:index]; 
} 

Mã này được nhận được gọi và -(NSArray *)acessibilityElements được trả lại một mảng của UIAccessibilityElements. Tuy nhiên, giọng nói trên điều khiển không hiển thị khi tôi chạm vào màn hình. Bất kỳ ý tưởng về những gì tôi đang thiếu hoặc làm sai?

Thông tin khác:

Tôi đang sử dụng một kịch bản và thêm các CCGLView đến UIView trong kịch bản này. _director.view là CCGLView mà tôi đã phân lớp.

// Add the director as a child view controller. 
[self addChildViewController:_director]; 

// Add the director's OpenGL view, and send it to the back of the view hierarchy so we can place UIKit elements on top of it. 
[self.view addSubview:_director.view]; 
[self.view sendSubviewToBack:_director.view]; 

Đối với một trong khi tôi nghi ngờ rằng vì tôi thêm subview rằng điều này đã làm cho nó không xuất hiện, nhưng tôi cũng đã cố gắng subclassing UIView trong kịch bản theo cùng một cách nhưng nó cũng không hoạt động.

Đây cũng là cách tôi tạo mỗi UIAccessibilityElement trong mảng.

UIAccessibilityElement *elm = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:view]; 
    elm.accessibilityFrame = f; 
    elm.accessibilityLabel = t.letter; 
    elm.isAccessibilityElement = YES; 
    elm.accessibilityHint = @"Button"; 
    elm.accessibilityValue = t.letter; 
    elm.accessibilityTraits = UIAccessibilityTraitButton; 

Trả lời

6

Tìm thấy giải pháp hiện đang hoạt động, trong trường hợp có người gặp sự cố này. -(id)accessibilityElementAtIndex:(NSInteger)index đã trở về thích hợp UIAccessibilityElement nhưng có vẻ như nó không được giữ lại bởi bất kỳ API trợ năng nào đang sử dụng nó. Tôi đã tạo ra một thuộc tính mạnh mẽ của NSArray để giữ các UIAccessibilityElements và bây giờ nó hoạt động tốt.

+0

Điều đó đã khiến tôi phát điên trong vài giờ - cảm ơn! –

Các vấn đề liên quan