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画外音在更改到下一个元素之前等待元素完成读取
基础教程推荐
- iOS4 创建后台定时器 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01