我已经构建了一个流媒体音频应用程序,如下所示:
当流丢失时,我覆盖此屏幕:
我的问题是,在Voiceover ON的情况下,所有底层控件仍然处于活动状态:我可以向它们全部滑动,并调整它们的值。
以下是我的代码片段,用于信号丢失和重新获得的时间:
@objc func lostStream() {
DispatchQueue.main.async {
self.lossOfSignalBlocker.alpha = 0.0
self.lossOfSignalBlocker.frame = self.view.bounds
self.view.addSubview(self.lossOfSignalBlocker)
self.lossOfSignalBlocker.isUserInteractionEnabled = true
//UIView.animate(withDuration: 0.2) { self.lossOfSignalBlocker.alpha = 1.0 }
UIView.animate( withDuration: 0.2, animations: { self.lossOfSignalBlocker.alpha = 1.0 } )
//Announce loss of signal to Voiceover user.
UIAccessibilityPostNotification(
UIAccessibilityAnnouncementNotification,
"Signal Lost" as NSString
)
}
}
@objc func regainedStream() {
DispatchQueue.main.async {
UIView.animate( withDuration: 0.2, animations: { self.lossOfSignalBlocker.alpha = 0.0 } )
{ _ in
self.lossOfSignalBlocker.removeFromSuperview()
}
}
}
如何禁用主UI,以便只有叠加层响应任何与画外音相关的操作?
在UIAccessibility
元素(例如视图)上,有一个名为accessibilityElementsHidden
的属性。将此值设置为true
应该隐藏“重新连接”视图到达所涵盖的视图。
考虑在背景中将qzexswpoi上的此值设置为true。
有关更多详细信息,请查看文档:UITableView
好!我已经成功了。除了将“accessibilityElementsHidden”设置为TRUE之外,您还必须通过使用“UIAccessibilityScreenChangedNotification”通知调用“UIAccessibilityPostNotification”来告知应用程序屏幕已更改。
这是现在代码的样子:
https://developer.apple.com/documentation/objectivec/nsobject/1615080-accessibilityelementshidden