ios - UIAccessibilityNotificationQuestion

标签 ios swift accessibility voiceover

我是 iOS 辅助功能领域的新手,我正在尝试使用此 UIAccessibilityNotification 功能,但它没有像我想象的那样工作。我编写了一个非常简单的应用程序,只有一个按钮,当您单击该按钮时,将调用此方法。

- (IBAction)announce:(id)sender {
    UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
                                @"Speak this out loud");
}

据我所知,当您点击按钮时,画外音会显示“大声说出来”,但它会读出按钮名称。谁能告诉我代码有什么问题或者我为什么使用错误?

为了清楚起见,我双击了按钮。当您单击按钮时,它会读取按钮名称和特征(“按钮”),而当您双击它时,它只会读取按钮名称。

感谢@ChrisCM 的回答。延迟公告使其生效。

@IBAction func announce(sender: AnyObject) {
    let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC)))

    dispatch_after(dispatchTime, dispatch_get_main_queue(), {
         UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, "Item added to cart")
    })
}

但这里仍然存在一个小问题,即在单击“添加到购物车”按钮后,画外音将针对第一个可访问的项目,即后退按钮并读取“后退按钮”,然后读取 announcementNotification 参数。

最佳答案

您对通知工作原理的理解是正确的,但是您对画外音如何处理基本交互的理解是错误的。当您发布公告时,它开始了,但它立即被对 ui 交互的标准画外音响应打断,这是宣布所按内容的辅助功能标签。在足够长的延迟后或基于除了点击之外的任何基本条件发布您的公告。

针对您的问题的第二部分(重点关注第一个可访问性问题)。这可能是因为正在发生某些屏幕重绘,因此 View 绘图层次结构正在发布固有的 UIAccessibilityScreenChangedNotification。您应该通过自己发布此通知来覆盖它,并使用您希望突出显示的元素。可能是启动屏幕更改的元素,也可能是由于此交互而添加的新内容。

关于ios - UIAccessibilityNotificationQuestion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009133/

相关文章:

使用多个 UIGestureRecognizers 关闭 iOS 键盘

iphone - 使用 `CVImageBufferRef` 将 `glTexImage2D` 转换为 OpenGL ES 纹理时如何消除伪影?

xcode - 当我在自定义转换中使用 SKAction 时,SKAction 不起作用

javascript - 使屏幕阅读器可以访问文本消息

ios - 如何使用 Firebase 在 iOS 上验证用户的电子邮件地址?

ios - UITableView 不在 becomeFirstResponder 上滚动

ios - 如何对项目内不同组的多个图像进行动画处理?

ios - 从 NSManagedObject 获取类型

c++ - 如何在另一个进程中获取有关Qt列表框内容的信息

accessibility - 元素可访问性显示为 "Ensure markup documents contain well-formed elements"