Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios “背后的观点”;通过;UIView不是';无障碍_Ios_Uikit_Accessibility_Voiceover_Uiaccessibility - Fatal编程技术网

Ios “背后的观点”;通过;UIView不是';无障碍

Ios “背后的观点”;通过;UIView不是';无障碍,ios,uikit,accessibility,voiceover,uiaccessibility,Ios,Uikit,Accessibility,Voiceover,Uiaccessibility,我有一个例子,一个透明的UIViewController显示在地图视图上。 ViewController.view是透明的,并且是“直通”视图。这意味着ViewController的所有触摸都会传递到VC后面的地图视图 “通过”行为由 override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { for subview in subviews { if !subview.isHi

我有一个例子,一个透明的
UIViewController
显示在地图视图上。 ViewController.view是透明的,并且是“直通”视图。这意味着ViewController的所有触摸都会传递到VC后面的地图视图

“通过”行为由

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
    for subview in subviews {
        if !subview.isHidden && subview.alpha > 0 && subview.isUserInteractionEnabled && subview.point(inside: convert(point, to: subview), with: event) {
            return true
        }
    }
    return false
}
所有的触摸和手势都很完美,但我发现画外音根本不起作用。无法访问地图视图。我无法选择任何带有VO的mapView元素。 我做了一些研究,发现VO使用了一种私有方法:

[UIViewAccessibility(SafeCategory) _accessibilityHitTest:withEvent:]

看起来这个方法没有使用重写的pointInside方法。那么有人知道如何以安全的方式修复它吗?

您可以通过设置
view.isAccessibilityElement=NO使VoiceOver忽略视图


或者,您可以使
视图
符合
UIAccessibilityContainer
协议。如果由于某种原因无法工作,您可以设置
view.accessibilityElements=@[mapView,…]

view.accessibilityElements=@[mapView,…]工作。解决方案很简单!如果使用谷歌地图(GMSMapView),您需要通过GMSMapView和每个GMSMarker。