标签: uiaccessibility

当呈现视图时,VoiceOver不会始终关注UILabel

我们有一个UILabel隐藏的登录屏幕,最初用于表示用户退出应用程序时的消息.

当在iOS中打开VoiceOver并且用户尝试从应用程序注销时,理想情况下应该读出注销消息标签.相反,它会读出登录屏幕的密码文本字段.

注销按钮的操作具有以下实现代码.

let loginStoryboard = UIStoryboard(name: "Login", bundle: nil)
        let loginViewController = loginStoryboard.instantiateInitialViewController() as! LoginViewController
        loginViewController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
loginViewController.logOut = true
self.presentViewController(loginViewController, animated: true, completion:nil)
Run Code Online (Sandbox Code Playgroud)

注销指示器设置为显示注销消息标签. LoginViewController viewDidLoad码.

if(!logOut){
            self.logOutMsg.hidden = true
}else{
            self.logOutMsg.text = NSLocalizedString("LoggedOutMsg", comment: "Logged out message")
            self.logOutMsg.hidden = false
}
Run Code Online (Sandbox Code Playgroud)

登录屏幕字段是故事板中启用的辅助功能.

行为不一致:有时会读取注销消息标签,有时会读出密码文本字段.每当VoiceOver读取密码文本字段时,我都会在控制台日志中看到错误.

 |error| Could not find <UIWindow: 0x124d13b10; frame = (0 0; 768 1024); gestureRecognizers = <NSArray: 0x174241140>; layer = <UIWindowLayer: 0x1742319c0>> in a list of sorted view [parent: <CaseworkerApp.AppDelegate: 0x124e008e0>] siblings …
Run Code Online (Sandbox Code Playgroud)

accessibility objective-c ios uiaccessibility swift

6
推荐指数
1
解决办法
686
查看次数

使用自定义视图时如何为菜单项指定可访问性属性值?

我正在编写一个NSMenuItem我想让它访问的自定义视图。当我不覆盖时accessibilityIsIgnored(因此返回NSView默认值YES),我在 Accessibility Inspector 中看到AXMenuItem使用自定义视图的菜单项的可访问性层次结构中有一个基本对象,但它缺少菜单项的大部分必需属性例如“标题”:

无障碍功能检查器在 AXMenuItem 无障碍功能对象上锁定的屏幕截图,当忽略无障碍功能时

所需的属性对于不使用自定义视图菜单项设置。

当我覆盖accessibilityIsIgnoredreturn 时NO,这会导致一个额外的辅助功能对象被添加到层次结构中(默认情况下是一个AXUnknown对象):

在不忽略辅助功能时,辅助功能检查器锁定在 AXMenuItem 对象下的 AXUnknown 辅助功能对象上的屏幕截图

由 的覆盖返回的属性值accessibilityAttributeValue:应用于AXUnknown下的此对象AXMenuItem,而不是应用于AXMenuItem对象本身的所需效果。

如何为菜单项提供缺失的属性值?

cocoa objective-c nsmenuitem uiaccessibility

5
推荐指数
0
解决办法
511
查看次数

UIAccessibilityAnnouncementNotification VoiceOver 中断

我在 iOS 7/8 UIAccessibility 上遇到了很多麻烦。我正在使用的特定用例是我期望的一个非常常见的“保存进度”用例。

编辑: 我注意到我最初的问题并不清楚想要的结果,所以我在这里添加了一个描述:目标是通过 VoiceOver 说出“保存进度”的消息,或者代替正在朗读或朗读之后的 NavigationBar 标题。我不确定在这种情况下可访问性的典型行为是什么,所以也许熟悉 iOS 可访问性的人也可以澄清这一点。

从最简单的解决方案开始,到最复杂的解决方案,我尝试了以下方法。

-(void) showProgressSavedPanel {

    ... // present the panel toast
    NSString * message = NSLocalizedString(@"Your progress has been saved.", @"Progress saved message");
    UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, message);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,使用这种方法,当 VoiceOver 自动朗读导航栏标题和后退按钮的标题时,通知很快就会被打断。实际的 VoiceOver 结果类似于“您的进度 - 导航栏标题 - 后退按钮”。

阅读有关 iOS 可访问性的文章,我发现了一个新的 API,它似乎也不起作用。添加了一个直接指向进度保存标签的新 IBOutlet 后,我​​将上面的代码替换为以下代码:

-(void) showProgressSavedPanel {

    ... // present the panel toast
    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _progressSavedLabel);
}
Run Code Online (Sandbox Code Playgroud)

使用UIAccessibilityScreenChangedNotificationUIAccessibilityLayoutChangedNotification有相同的结果:预期的信息没有被说出。无论我做什么,VoiceOver 似乎只想说出导航栏标题。

我想出了一个解决方案,让我很伤心大熊猫,这是一个任意延迟(1.5似乎工作)后使用的第一个解决方案,除了张贴公告通知,导致公告出现回栏按钮项具有被说。

有谁知道更好的方法?

提前致谢 …

accessibility objective-c uiaccessibility

5
推荐指数
1
解决办法
6310
查看次数

覆盖 UITextField 中的 VoiceOver 消息 - iOS Accessibilty

我有一个包含“\xc2\xa324 pm”的 UITextField,但我希望画外音说“\xc2\xa324 每月”。通过设置:

\n\n
[textView setAccessibilityLabel:@"\xc2\xa324 per month"];\n
Run Code Online (Sandbox Code Playgroud)\n\n

VoiceOver 读出“\xc2\xa324 每月 \xc2\xa324 下午”。

\n\n

如何阻止 UITextField 中的消息被读出?

\n

accessibility ios voiceover uiaccessibility

5
推荐指数
1
解决办法
3608
查看次数

在辅助功能中启用粗体文本时,UIImageView 的框架错误

我有一个UIImageView后缘锚定到另一个视图的前缘。

然而,当我在 iPhone 上的辅助功能设置中启用粗体文本时,图像视图的大小会变大 1pt,这使得图像呈现在错误的位置。

这是 UIKit 的错误吗?

self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];

[self.containerView addSubview:self.imageView];

[self.imageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[self.imageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.imageView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[self.imageView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];

// .. create constraints here ...
Run Code Online (Sandbox Code Playgroud)

督察

objective-c uiaccessibility

5
推荐指数
0
解决办法
407
查看次数

多个实时区域和可访问性

我有一个页面,其中不止一个页面在用户输入时发生变化。如果我对所有这些都使用 role="alert" ,则 Jaws/Narrator 只会读出其中之一。这是预期的吗?解决方法是什么?

html accessibility uiaccessibility

5
推荐指数
1
解决办法
1573
查看次数

如何为 tableview 上的 webview 内容启用 VoiceOver

通常,VoiceOver正确读取加载的网页内容,WKWebView并且可以读取按钮和链接。

但是,?当我说WKWebViewUITableViewCell,并显示在UITableVIewVoiceOver无法识别它。

根据苹果的tableview文档,为了让每个内容都分别UITableViewCell被识别VoiceOver,需要将isAccessibilityElementcell设置为false isAccessibilityElement,view设置为true。

但如果isAccesibilityElementofWKWebView设置为 true,视图本身是聚焦的,我们无法识别内部网页内容。

此外,VoiceOver在加载 Web 内容后第一次启用时,它执行了可以识别 Web 内容的奇怪行为。

怀疑是VoiceOver内容识别时序的问题,我试了一下运行

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)

或者

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)

加载网页内容后,却没有得到好的结果。

是否有处理内容的一个好办法wkwebviewtableViewVoiceOver

accessibility ios voiceover uiaccessibility swift

5
推荐指数
1
解决办法
2883
查看次数

辅助功能将焦点设置为导航栏标题项

概述:

我想将可访问性焦点设置为导航栏的标题项。

默认情况下,焦点是从左上角设置的,这意味着后退按钮将处于焦点上。

我希望标题项目成为焦点。

迄今为止的尝试:

    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
                                    navigationController?.navigationBar.items?.last)
Run Code Online (Sandbox Code Playgroud)

问题:

  • 上面的代码没有区别,返回按钮仍然是焦点。

可能的原因:

  • 无法获取到title对应的item才能设置焦点。

ios uiaccessibility swift

5
推荐指数
1
解决办法
3369
查看次数

ios VoiceOver 焦点不会超出导航栏

VoiceOver 焦点不会超出导航项目。我向右滑动,但焦点被困在导航项的最后一个元素上。可能它应该移动到 ViewController 视图的第一个元素。我设置了accessibilityElements并使每个元素isAccessibilityElement = true。如果我尝试点击 ViewController 的任何元素,则会将焦点困在状态栏上。

navigationbar ios voiceover uiaccessibility swift

5
推荐指数
1
解决办法
1006
查看次数

iOS-UIAccessibility 将随机表视图单元格集中在重新加载表视图上

我有一个 UITableview,每当我重新加载表视图时,可访问性焦点都会转到随机单元格。我尝试发布如下通知以将焦点移至特定单元格

let indexPath = IndexPath.init(row: 0, section: 0)
let desiredCell = self.myTableView.cellForRow(at:indexPath)
UIAccessibility.post(notification: .layoutChanged, argument:desiredCell)
Run Code Online (Sandbox Code Playgroud)

我观察到以下问题: 发布通知将焦点移至所需行后,焦点转到随机行,然后转到所需行。

大家有没有遇到过同样的情况,或者有什么想法,请与我分享,

提前致谢。

xcode uitableview ios uiaccessibility

5
推荐指数
0
解决办法
576
查看次数