通过外部点击+ VoiceOver模式关闭iOS表单模式

时间:2018-06-20 02:17:25

标签: ios uikit voiceover uiaccessibility

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

我的问题是,如何在VoiceOver模式下使用户可以访问它?原生操作表允许在表外单击以消除,甚至提示用户,说“双击以消除弹出窗口”。如何以相同的方式显示UIWindow点击手势?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

从Apple:

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

  

关闭警报或返回上一屏幕:两指擦洗   (快速移动两根手指三遍,使之成为“ z”)。

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