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 应用程序的 Firebase 消息的传递状态? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01