gpt4 book ai didi

iphone - 使程序化的 iOS UIView 完全可访问

转载 作者:可可西里 更新时间:2023-11-01 05:48:08 25 4
gpt4 key购买 nike

我正在以编程方式为 iOS 构建 UINavigationContoller,但在使其完全可访问时遇到了问题。在 loadView 中,我创建了主要的 UIView 并将其设置为不可访问:

    - (void)loadView
{
CGRect viewRect = [[UIScreen mainScreen] applicationFrame];
UIView *tmp = [[UIView alloc] initWithFrame:viewRect];
[tmp setIsAccessibilityElement:NO];

然后我添加仅包含背景图像的附加 UIViews 并将它们设置为不可访问。所有 View 和控件都添加到上面创建的“tmp”UIView 中。这是一个“背景” View 示例:

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];

最后,我添加了一个 UIButtonUILabelUIButtonBarItem。我最后添加这些,以便它们位于 View 层次结构的顶部。我为它们添加了可访问性标签和特征。这是 UIButton:

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);当我将此 View 插入堆栈时。

打开画外音后,当显示 View 时,我可以滑动并提供我的每个元素(UIButtonBarItemUILabelUIButton ) 焦点,我可以通过双击激活它们。但是,VoiceOver 不会说出有关这些元素的信息。使用辅助功能检查器在模拟器中进行测试会显示我通过 aControl.accessibilityLabel = @"the label"; 设置的标签;

此 View 用于录制音频。如果我激活按钮并录制音频并停止录制,VoiceOver 现在会在我聚焦元素时说出元素的标签?为什么在 View 首次加载时 VoiceOver 不说出信息?任何线索表示赞赏!

我正在装有 iOS 4.3.3 的 iPad 2 上进行测试。

最佳答案

如果您希望您的 View 不可访问,请使用:

[microphoneView setUserInteractionEnabled:NO];  

关于iphone - 使程序化的 iOS UIView 完全可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com