平移时,VoiceOver无法访问超级视图范围之外的视图

时间:2018-06-24 23:37:41

标签: ios voiceover uiaccessibility

在我的应用程序中,我有一些控件是UIView的子视图,但是它们的框架不在超级视图范围之内。他们对可见的用户可见,因为clipsToBoundsfalse。对于VoiceOver用户,他们可以突出显示其超级视图范围内的控件,然后向右轻扫以突出显示超出范围的下一个控件。如预期的那样。但是,如果它们取而代之在屏幕上平移并平移,则VoiceOver永远不会突出显示其超视范围之外的元素。我如何确保在平移时可以访问这些元素?

我创建了一个遇到此问题的示例项目。这里有两个按钮作为子视图添加到灰色的UIView中。按钮0位于其概览的范围内,按钮1位于外部。平移时可以访问按钮0,而不能平移按钮1。

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎可访问性框架使用alarm_name = "${element(split(",", join(",", aws_instance.web.*.id)), count.index)}-cpu-util" alarm_name = "${element(split(",", join(",", aws_instance.web.*.id)), count.index)}-status-check" 来确定是否可以通过VoiceOver访问视图。

我已经解决了这个问题,方法是在超级视图上重写此函数,并在该点超出超级视图范围但在子视图范围之内时返回UIView.point(inside:_, with:_)

在这种特殊情况下,我的超级视图具有一个在超级视图范围之外绘制的背景视图,而我希望VoiceOver可以访问的视图位于该背景视图的范围之内。所以我有:

true

根据情况进行适当调整。