iOS 13 语音控制 UIScrollView

标签 ios uiscrollview ios13 uiaccessibility voice-control

iOS13 语音控制功能具有“向下滚动”命令。此命令适用于 UITableViews,但似乎不适用于具有可滚动内容的 UIScrollViews。

  1. 这是故意的吗?
  2. 无论是否有意,有没有办法让此命令在 UIScrollView 上运行?

示例:UIScrollView 中包含大量文本的 UILabel(约束是正确的 - 它会滚动并通过旁白确认,当出现“第 1 页,共 3 页”时活跃)

enter image description here

最佳答案

This command works for UITableViews but does not seem to work for UIScrollViews with scrollable content.

...仅当此内容是必须可滚动的巨大 UILabel 内容时:添加许多其他元素( slider 、按钮...),您会注意到滚动已启用。

关于这一点,在 TextKit Best Practices (2018 WWDC 视频),强烈建议使用 UITextView 来实现此目的: enter image description here

Is there a way to enable this command to work on a UIScrollView?

将标签和 ScrollView 切换为 TextView ,以使语音控制功能适合您的特定用例。

否则,它可以与许多与 UILabel 不同的其他元素一起使用: ScrollView 知道其内容大小以及何时必须向下/向上滚动,但语音控制功能无法将标签内容识别为可以直接交互的元素在 ScrollView 内。

我像你一样用一个按钮和一个巨大的 UILabel 进行了测试: enter image description here

  1. 向下滚动可以到达标签的末尾。
  2. 向上滚动根本不起作用。

标签似乎是一种空框,语音控制在 ScrollView 中会忽略:要在 ScrollView 中启用此命令,只需将标签替换为 TextView
现在,如果您的用例是 UIScrollView 中的单个 UILabel,请将其删除以显示 UITextView

编辑
下面是使 UITextView 滚动与 VoiceControl 功能配合使用的 Xcode 屏幕截图: enter image description here

...结果如下: enter image description here

正如您所注意到的,这只是一个带有简单 TextView 的空白项目:iOS 可以识别这个单个元素,并在 向下滚动向上滚动 时按需要执行操作发声。

关于iOS 13 语音控制 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620718/

相关文章:

ios - 制作触摸时上下滑动的UIView列表

iphone - iOS 13 无法在后台获取 VoIP 推送通知

iphone - ios中的过滤器数组检查多个属性

ios - 使用 UISlider 更改字体大小

iphone - 将内存分配给属性的潜在泄漏

ios - 在 scrollView 中对 contentView 设置约束

iphone - UIScrollView 中的几个 UIImageView 和崩溃

iOS:使用 2 个手指时取消 UIScrollView 触摸

iOS 13后台下载问题

popover - iOS 13 - UIPopoverPresentationController 源 View 内容在箭头中可见