使程序化iOS UIView完全可访问

| 我正在以编程方式为iOS构建“ 0”,并且无法完全访问它。在
loadView
中,我创建主
UIView
并将其设置为不可访问:
    - (void)loadView
    {
    CGRect viewRect = [[UIScreen mainScreen] applicationFrame];
    UIView *tmp = [[UIView alloc] initWithFrame:viewRect];
    [tmp setIsAccessibilityElement:NO];
然后添加仅包含背景图像的附加“ 4”,并将其设置为不可访问。所有视图和控件都添加到上面创建的\“ tmp \”
UIView
中。这是一个“背景”视图示例:
UIImage* microphone = [UIImage imageNamed:@\"microphone.jpg\"];
    UIView* microphoneView = [[[UIView alloc] initWithFrame: CGRectMake(0,0,viewRect.size.width, microphone.size.height)] autorelease];
    [microphoneView setBackgroundColor:[UIColor colorWithPatternImage:microphone]];
    [microphoneView setIsAccessibilityElement:NO];
    [tmp addSubview:microphoneView];
最后,我添加了
UIButton
UILabel
UIButtonBarItem
。我最后添加了这些,因此它们位于视图层次结构的顶部。我向它们添加了可访问性标签和特征。这是the7ѭ:
self.recordImage = [UIImage imageNamed: @\"record_button.png\"];
self.stopRecordImage = [UIImage imageNamed: @\"stop_button.png\"];
self.recordButton.accessibilityTraits |= UIAccessibilityTraitStartsMediaSession;
self.recordButton = [[UIButton alloc  ] initWithFrame: CGRectMake((viewRect.size.width - recordImage.size.width)/2 , (microphone.size.height + (grayBkg.size.height - recordImage.size.height)/2), recordImage.size.width, recordImage.size.height)];
[self.recordButton setIsAccessibilityElement:YES];
[self.recordButton setAccessibilityLabel:  @\"toggle recording start\"];
[self.recordButton setImage: recordImage forState:UIControlStateNormal];
[self.recordButton addTarget: self action:@selector(processButton:) forControlEvents:UIControlEventTouchUpInside];
[tmp addSubview:recordButton];
最后
....
[self setView:tmp];
[tmp release];
我确实叫
UIAccessibilityPostNotification
UIAccessibilityScreenChangedNotification
,nil);当我将此视图推入堆栈时。 启用画外音后,显示视图时,我可以滑动并指定我的每个元素((9ѭ,
UILabel
UIButton
)焦点,然后双击即可激活它们。但是,VoiceOver不会讲有关元素的信息。使用Accessibility Inspector在模拟器中进行的测试显示了我通过aControl.accessibilityLabel = @ \“ thelabel \”设置的标签; 该视图用于录制音频。如果我激活按钮并录制音频并停止录制,当我对元素进行聚焦时,VoiceOver现在会说出元素的标签吗?视图首次加载时,VoiceOver为什么不讲信息?任何线索表示赞赏! 我正在使用iOS 4.3.3的iPad 2进行测试。     
已邀请:
        如果您希望无法访问视图,请使用:
[microphoneView setUserInteractionEnabled:NO];  
    
        该视图用于录音。问题是我在viewDidLoad方法中将AVSession类别设置为AVAudioSessionCategoryRecord。这导致VoiceOver无法说出视图信息。我修改了代码,仅在按下录制按钮时才将类别设置为AVAudioSessionCategoryRecord。录制完成后,我将其设置为AVAudioSessionCategoryPlayAndRecord。这是对其进行完整解释的线程:http://lists.apple.com/archives/accessibility-dev/2011/Jul/msg00002.html     

要回复问题请先登录注册