iOS13 语音控制功能具有“向下滚动”命令。此命令适用于 UITableViews,但似乎不适用于具有可滚动内容的 UIScrollViews。
- 这是故意的吗?
- 无论是否有意,有没有办法让此命令在 UIScrollView 上运行?
示例:UIScrollView 中包含大量文本的 UILabel(约束是正确的 - 它会滚动并通过旁白确认,当出现“第 1 页,共 3 页”时活跃)
最佳答案
This command works for UITableViews but does not seem to work for UIScrollViews with scrollable content.
...仅当此内容是必须可滚动的巨大 UILabel 内容时:添加许多其他元素( slider 、按钮...),您会注意到滚动已启用。
关于这一点,在 TextKit Best Practices (2018 WWDC 视频),强烈建议使用 UITextView 来实现此目的:
Is there a way to enable this command to work on a UIScrollView?
将标签和 ScrollView 切换为 TextView ,以使语音控制功能适合您的特定用例。
否则,它可以与许多与 UILabel 不同的其他元素一起使用: ScrollView 知道其内容大小以及何时必须向下/向上滚动,但语音控制功能无法将标签内容识别为可以直接交互的元素在 ScrollView 内。
我像你一样用一个按钮和一个巨大的 UILabel 进行了测试:
向下滚动
可以到达标签的末尾。向上滚动
根本不起作用。
标签似乎是一种空框,语音控制在 ScrollView 中会忽略:要在 ScrollView 中启用此命令,只需将标签替换为 TextView 。
现在,如果您的用例是 UIScrollView 中的单个 UILabel,请将其删除以显示 UITextView。
编辑
下面是使 UITextView
滚动与 VoiceControl 功能配合使用的 Xcode 屏幕截图:
正如您所注意到的,这只是一个带有简单 TextView 的空白项目:iOS 可以识别这个单个元素,并在 向下滚动
和 向上滚动
时按需要执行操作发声。
关于iOS 13 语音控制 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620718/