代码之家  ›  专栏  ›  技术社区  ›  Jordan H

当左右摇摄时,无法在SuperView界限之外的视图上画外音

  •  1
  • Jordan H  · 技术社区  · 6 年前

    在我的应用程序中,我有一些控件是 UIView 但它们的帧超出了超级视图的范围。它们对有视力的用户是可见的,因为 clipsToBounds false 是的。对于VoiceOver用户,他们可以突出显示在其SuperView边界内的控件,然后向右滑动以突出显示边界外的下一个控件。这是意料之中的。但是如果他们在屏幕周围轻敲和平移,voiceover就不会突出显示超出其superview界限的元素。我如何才能确保这些元素可以访问时,左右摇摄?

    我创建了一个体验这个问题的示例项目。这里有两个按钮作为子视图添加到灰色 uiview公司 是的。按钮0位于其超级视图的边界内,按钮1位于外部。左右摇摄时可以访问按钮0,但不能访问按钮1。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kate Bertelsen    6 年前

    似乎辅助功能框架使用 UIView.point(inside:_, with:_) 确定是否可以通过画外音访问视图。

    我通过在superview上重写这个函数并返回 true 当点在超视图的边界之外但在子视图的边界之内时。

    在这个特殊的例子中,我的超视图有一个背景视图,它被绘制在超视图的边界之外,而我想让voiceover访问的视图在背景视图的边界之内。所以我有:

    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return background.frame.contains(point)
    }
    

    根据您的情况进行适当调整。