在启用VoiceOver的情况下,当用户用三根手指滑动时滚动显示当前页面,例如:“第1页,共3页”。但是,这些声明并不总是正确的。
以下代码创建一个滚动视图,并在其中填充三个标签(使用不同的背景色来区分它们):
let scrollView = UIScrollView()
scrollView.frame = view.bounds
view.addSubview(scrollView)
let colours: [UIColor] = [.red, .blue, .green]
var lastView: UIView?
for colour in colours {
let label = UILabel()
label.frame.size = scrollView.frame.size
label.backgroundColor = colour
label.textColor = .white
label.text = "\(colours.firstIndex(of: colour)!)"
label.textAlignment = .center
scrollView.addSubview(label)
label.frame.origin.y = lastView?.frame.maxY ?? 0
lastView = label
}
scrollView.contentSize.height = lastView!.frame.maxY
当我滚动时(如上所述),将发布以下公告:
我在做错什么吗,或者这是iOS中的错误?如果是后者,我可以采取任何解决方法来确保宣布正确的页码吗?
答案 0 :(得分:-1)
正如您在评论中提到的,我误解了您的问题。
我在做错什么吗,或者这是iOS中的错误?
您没有做错任何事:系统通过三指垂直滑动来计算滚动内容所需的页面总数,而不必与标签的号码相匹配。< / p>
在下面查看您的代码提供的显示的彩色标签: 每次滑动都不会在其整个高度和宽度上显示标签,这就是为什么页面多于标签数量的原因:这绝对不是错误,这是它的工作方式。
...有什么我可以应用的解决方法,以确保宣布正确的页码?
但是,如果您愿意这样做,我建议您看一下可能对有帮助的custom scrolling(我从没使用过,但这是我对您的唯一询问目标)。
因此,不幸的是,没有解决方法,因为您提到的问题,即使对于本机iOS应用程序也经常发生。
查看带有小部件的iPhone上最右侧的页面,并聆听所宣布的页码:第一个公告对我来说总是错误的(5页,只有3页)。
第一次播报/阅读有时是错误的,但是在经过三指垂直滑动后,系统会纠正我的初始错误,如我在插图中指出的那样。
对于用户而言,这不是一个理想的情况,但是,到目前为止,您无法做得更好,除非为解决此问题很快点燃蜡烛。