【问题标题】:Dismiss iOS form sheet modal via outside tap + VoiceOver mode通过外部点击 + VoiceOver 模式关闭 iOS 表单模式
【发布时间】:2018-06-20 02:17:25
【问题描述】:

在 iPad 上,您可以使用 controller.modalPresentationStyle = UIModalPresentationFormSheet 在屏幕上显示居中的模式。一种常见的技术是允许用户通过单击“外部”或“后面”来关闭模式。这在许多其他答案中都有介绍(Iphone SDK dismissing Modal ViewControllers on ipad by clicking outside of it, Dismiss modal view form sheet controller on outside tap),通常是通过向视图的 UIWindow 添加轻击手势。

我的问题是,如何让 VoiceOver 模式下的用户可以访问它?本机操作表允许在工作表外单击以关闭,甚至提示用户说“双击以关闭弹出窗口”。如何以相同的方式公开 UIWindow 轻击手势?

【问题讨论】:

  • 一种选择是通过accessibilityPerformEscape 实现“全局转义手势”(如ronnqvi.st/adding-accessible-behavior 中所述)。但是,如果用户不知道该手势,则这不是很容易发现。
  • 仅供参考 - 通过点击外部操作表或其他弹出框来关闭它们的默认功能内置于以“弹出框”模式呈现样式呈现的控制器中。
  • @rmaddy 是正确的 - 系统自动提供了该功能,并且表单样式不支持点击外部关闭(不适用于 VO 用户或非 VO 用户)

标签: ios uikit voiceover uiaccessibility


【解决方案1】:

FormSheet 演示文稿基本上没有办法做到这一点。您可以使用 Popover 演示文稿,但在某些情况下它的行为会有所不同。

我的解决方案是检查 UIAccessibilityIsVoiceOverRunning() 并在 FormSheet 顶部添加一个额外的关闭按钮元素,可以通过画外音单击该元素。我还为global escape gesture 实现了accessibilityPerformEscape

【讨论】:

  • 您也可以仅在画外音中向弹出框添加轻击手势并使用它来关闭,而不是添加另一个按钮。您的解决方案将我引向了这个 fwiw :)
【解决方案2】:

来自苹果:

https://support.apple.com/guide/iphone/learn-voiceover-gestures-iph3e2e2281/ios

关闭警报或返回上一个屏幕:两指擦洗 (快速来回移动两根手指 3 次,形成一个“z”)。

如果模态表打开了,我们可以提示用户“做一个z手势”返回。

【讨论】:

  • 在我看来这是解决方案,但无法向您的应用程序 VoiceOver 用户解释,他们不知道它,然后无法弄清楚如何离开这种模式视图,不幸的是:很多他们中的一些人不知道这个特定的手势。
  • 假设用户习惯做一个手势来阅读屏幕上的所有项目是否安全? “用两根手指向上滑动即可阅读屏幕上的所有内容。”?如果用户习惯这样做,一种选择可能是使用提示之类的东西。例如,在屏幕的第一个元素上设置提示“要返回,请用两根手指执行 Z 手势”。类似那条消息的东西。 developer.apple.com/documentation/uikit/uiaccessibilityelement/…
  • 我不确定他们都知道两指手势,但它不会阻塞:您可以通过另一种方式迭代项目,但使用 Z 手势离开模态视图时并非如此。此外,请注意由于设备设置而可能被忽略的提示:我建议不要指望提示提供重要信息。
猜你喜欢
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多