如何在 iOS13 上的 iPad 上呈现 iPhone 风格的 actionSheet?

Posted

技术标签:

【中文标题】如何在 iOS13 上的 iPad 上呈现 iPhone 风格的 actionSheet?【英文标题】:How to present actionSheet in iPhone style on iPad on iOS13? 【发布时间】:2020-01-07 06:26:27 【问题描述】:

一些背景知识可以更好地理解这个问题:

iPad 上的 iOS 12 上,当我使用 .actionSheet 作为 UIAlertController 的类型时,它显示为弹出框。另外需要设置sourceRectsourceView,否则会崩溃。

但是。当我在 ViewController 中以 formSheet/pageSheet/popover 的形式呈现这样的警报时,警报将不需要 sourceRect/sourceView 并且将呈现为 iPhone 样式的操作表(但不像它那样作为弹出框应该在 iPad 上)。看起来像这样:

ios 13 发生了什么:

在 iOS13 上,这种行为发生了变化。上面的情况现在崩溃了,需要 sourceRect/sourceView ,因为它通常发生在 iPad 上。这意味着即使警报显示在 formSheet/pageSheet/popover VC 中,它仍然需要 sourceRect/sourceView,现在它将显示为弹出框(但不是 iPhone 样式的操作表)。

问题:

如果有人知道如何在这种情况下以相同的 actionSheet 样式(但不是弹出框)保持警报演示,我将不胜感激,就像以前在 iOS 12 上一样。

更新:显然这个问题开始出现在 iOS13.2(不是 13.0)

【问题讨论】:

我还没有找到这样做的方法。看起来他们只是撤回了可以让警报出现在 inside 呈现的视图控制器的功能。我的猜测是这是一个漏洞/边缘案例,他们关闭了它。 @matt 知道了,谢谢分享。很高兴听到我不是唯一一个有这个问题的人。但很遗憾他们删除了这个“功能”。 【参考方案1】:

自 iOS 13.2 起,不再可能实现所需的行为。

【讨论】:

发行说明中有这个吗? @pfandrade 没有。因为以前它也从来不是一个“功能”。所以他们没有删除他们承诺拥有的东西..

以上是关于如何在 iOS13 上的 iPad 上呈现 iPhone 风格的 actionSheet?的主要内容,如果未能解决你的问题,请参考以下文章

网站在 iOS6 中正常呈现,但在 iOS5 iPad 模拟器中翻倍

在 Ipad 上的模态视图上插入子视图

iPad 上的键盘默认为 ASCII

如何使用 iOS 13 在 iPad/iPhone 上隐藏页面缩放栏

如何在 iOS 6+ 上检测用户何时强制隐藏 iPad 上的键盘

在 iPhone 上处理时如何使 iPad 上的 iOS 推送通知无效?