iOS VoiceOver wait on element to finish reading before changing to next element(IOS画外音在更改到下一个元素之前等待元素完成读取)
问题描述
我有一个可以切换所显示标签的按钮:
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button.accessibilityLabel = "You can tap this really long string that i'm testing"
label.accessibilityLabel = "This is a label"
}
@IBAction func buttonTapped(_ sender: UIButton) {
label.isHidden = !label.isHidden
if !label.isHidden {
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, label)
}
}
}
轻触按钮时,如果显示标签,我将激活要由画外音读取的标签。问题是当用户点击按钮时,画外音会自动开始读取按钮的accessibilityLabel
。这导致画外音在切换到读取标签的accessibilityLabel
之前读取按钮的accessibilityLabel
的一半(例如"您真的可以点击这个……这是一个标签")。
是否有一种方法可以让我知道画外音何时完成读取按钮的accessibilityLabel
,并且只有然后调用UIAccessibilityPostNotification
?或者,有没有办法在用户点击按钮时禁止画外音再次读取该按钮?
此处可以看到示例项目:https://github.com/rajohns08/VoiceOverTest
推荐答案
您可以在按钮上设置以下属性,点击按钮时按钮将不再再次读出:
button.accessibilityTraits += UIAccessibilityTraitStartsMediaSession
这会告诉系统该按钮启动了一个多媒体事件,并且在激活时它应该不会发出任何声音。
关于在移动到其他元素之前等待元素完成读取的问题:通过订阅此通知:.UIAccessibilityAnnouncementDidFinish
.UIAccessibilityAnnouncementDidFinish
当系统读出像这样发送的通知时,它可以很好地工作:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, title)
然而,我不知道如何等待像LayoutChanged和ScreenChanged这样的东西来完成阅读。他们不会发出上述公告通知。如果你能弄清楚,请告诉我。
这篇关于IOS画外音在更改到下一个元素之前等待元素完成读取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:IOS画外音在更改到下一个元素之前等待元素完成读取
基础教程推荐
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01