Dar*_*ren 5 accessibility mapkit mkmapview ios voiceover
我有一个MKAnnotationView子类并将其中的几个放在MKMapView. 该MKAnnotationView子类设置一些辅助元素是这样的:
func applyAccessibility() {
self.isAccessibilityElement = true
self.accessibilityTraits = [.none]
self.accessibilityLabel = "Bus stop map pin"
self.accessibilityValue = busStop.name
}
Run Code Online (Sandbox Code Playgroud)
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)
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但是这个标注视图对 VoiceOver 完全不可见。
在init标注视图中,我设置了:
isAccessibilityElement = true
accessibilityTraits = .none
accessibilityLabel = "Callout view"
accessibilityIdentifier = "BusStopAnnotationCalloutView.callout"
Run Code Online (Sandbox Code Playgroud)
它还创建了自己的标签和一个按钮,我设置了类似这样的按钮:
label.isAccessibilityElement = true
label.accessibilityTraits = .header
label.accessibilityLabel = "\(busStop.name)"
Run Code Online (Sandbox Code Playgroud)
用户界面按钮
button.isAccessibilityElement = true
button.accessibilityTraits = .button
button.accessibilityLabel = "Select this bus stop"
Run Code Online (Sandbox Code Playgroud)
但这些元素都对 VoiceOver 不可见。将Accessibility Inspector无法看到它们。
当我在视图中移动时,Accessibility Inspector它会拾取并且MKAnnotation位于标注下方的地图上。
编辑 - - - -
我创建了一个小示例项目,它有一个无法获得任何可访问性的自定义标注视图。
还有一个简短的屏幕录像显示了这个问题:
小智 4
这里的问题是您的标注视图是注释视图的子视图。因此,如果您的注释视图将其isAccessibilityElement设置为 true,您将无法专注于标注。解决此问题的一种方法是在isAccessibilityElement每次选择注释时将其设置为 false,反之亦然。
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |