iOS 13 语音控制 UIScrollView
Posted
技术标签:
【中文标题】iOS 13 语音控制 UIScrollView【英文标题】:iOS 13 Voice Control UIScrollView 【发布时间】:2020-01-07 00:35:00 【问题描述】:ios13 语音控制 功能有一个命令“向下滚动”。此命令适用于 UITableViews,但似乎不适用于具有可滚动内容的 UIScrollViews。
-
这是故意的吗?
有意或无意,有没有办法让这个命令在 UIScrollView 上工作?
示例:在 UIScrollView 内包含大量文本的 UILabel(约束是正确的 - 它滚动并由 Voice Over 确认,当它说“第 1 页,共 3 页”时主动)
【问题讨论】:
【参考方案1】:此命令适用于 UITableViews,但似乎不适用于具有可滚动内容的 UIScrollViews。
...仅当此内容是必须可滚动的巨大 UILabel 内容时:添加许多其他元素(滑块、按钮...),您会注意到启用了滚动。
关于这一点,在TextKit Best Practices(2018 WWDC 视频) 中,强烈建议为此目的使用 UITextView:
有没有办法让这个命令在 UIScrollView 上工作?
将标签和滚动视图改为文本视图,以使语音控制功能适用于您的特定用例。
否则,它可以与 UILabel 不同的许多其他元素一起使用:滚动视图知道其内容大小以及何时必须向下/向上滚动,但语音控制功能无法将标签内容识别为直接与之交互的元素在滚动视图中。
我和你一样用一个按钮和一个巨大的 UILabel 进行了测试:
Scroll down
努力到达我的标签的末尾。
Scroll up
永远行不通。
标签似乎是语音控制在滚动视图中忽略的一种空框:要在滚动视图中启用此命令,只需将标签替换为文本视图。 现在,如果您的用例是 UIScrollView 中的单个 UILabel,请将其删除以 显示 UITextView。
编辑
这是使 UITextView
滚动与 VoiceControl 功能一起使用的 Xcode 屏幕截图:
... 结果如下:
如您所见,这只是一个带有简单文本视图的空白项目:iOS 会识别这个单一元素,并在 Scroll down
和 Scroll up
发出声音时按照需要执行操作。
【讨论】:
如果我用 UITextView 替换 ScrollView + UILabel 它仍然不会使用语音控制滚动。你设法让它发挥作用吗?现在我只有一个空白的 ViewController,它的 UITextView 被限制在视图的顶部/底部/左侧/右侧。伟大的想法标签只是滚动视图中的一种空元素! @Wych:添加的屏幕截图突出显示效果很好。只需创建一个空白项目并添加带有约束和个人内容的文本视图。 @xle-22 是的,我可以从空白的 UITextView 重现您的功能,但如果您将其设为不可编辑,则画外音将停止按预期工作。在这方面,它似乎与 ScrollView 中的 UILabel 相同?以上是关于iOS 13 语音控制 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章