如何解决MKAnnotationView 自定义标注对辅助功能VoiceOver不可见
我有一个 MKAnnotationView
子类,并将其中几个放在 MKMapView
上。 MKAnnotationView
子类设置了一些可访问性元素,如下所示:
func applyAccessibility() {
self.isAccessibilityElement = true
self.accessibilityTraits = [.none]
self.accessibilityLabel = "Bus stop map pin"
self.accessibilityValue = busstop.name
}
VoiceOver 读出固定在地图上的公交车站的名称。
然后我使用 UIView
子类作为点击公交车站时的标注视图。
func mapView(_ mapView: MKMapView,didSelect view: MKAnnotationView) {
if let annotation = view.annotation
{
if annotation is MKUserLocation
{
// This is our location marker
return
}
busstopAnnotationCalloutView.setupForAnnotationView(view,delegate: self)
view.addSubview(busstopAnnotationCalloutView)
mapView.setCenter(annotation.coordinate,animated: true)
}
}
这很好用,但是这个标注视图对 VoiceOver 完全不可见。
在我设置的标注视图的 init
中:
isAccessibilityElement = true
accessibilityTraits = .none
accessibilityLabel = "Callout view"
accessibilityIdentifier = "BusstopAnnotationCalloutView.callout"
label.isAccessibilityElement = true
label.accessibilityTraits = .header
label.accessibilityLabel = "\(busstop.name)"
界面按钮
button.isAccessibilityElement = true
button.accessibilityTraits = .button
button.accessibilityLabel = "Select this bus stop"
但这些元素都对 VoiceOver 不可见。 Accessibility Inspector
看不到它们。
当我使用 Accessibility Inspector
在视图中移动时,它只会拾取地图上标注下方的 MKAnnotation
。
编辑--------
解决方法
在直接向 Apple 提出 Developer Technical Support
请求后,他们认为这是一个错误,但是由于这在我测试过的任何 iOS 版本上都不起作用,我认为这更像是一种疏忽而不是一个错误,我很惊讶没有其他人想让地图视图标注可访问。
Apple DTS 还问我是否希望他们寻找解决方法,几天后他们回来说根本没有!
所以现在,从 iOS 12.4 开始,答案是不可能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。