问题标签 [uipopoverpresentationcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
371 浏览

ios - 旋转时弹出窗口视图位置错误

我可能会尝试将弹出框居中并使其在旋转后仍居中。这项研究几乎回答了我的问题。但是,我注意到一个非常奇怪的问题:当我在设备处于纵向时启动弹出框时,它首先是居中的,但是,如果我旋转到横向,然后将它再次旋转到纵向,它是一个比中心位置高一点。我通过屏幕截图制作了一张照片以表明

前后对比

左边的截图是正确的位置,在第一次启动popover时出现,右边的截图是错误的位置,你可以通过我画的线清楚地看到它们之间的区别。

这是我用来使弹出框居中的代码

此外,我已经意识到这个问题只发生在纵向,弹出框总是在横向位置很好地居中。这里可能有什么问题?

0 投票
5 回答
1094 浏览

ios - 如何将点击手势添加到变暗的视图背景?

我已经尝试了一段时间。下面的代码是我的 UIPresentationController。当一个按钮被按下时,我添加了一个暗淡的 UIView 并且第二个模态(presentedViewController)在中途弹出。

我在方法presentationTransitionWillBegin() 中添加了点击手势识别器我不知道为什么当我点击变暗的UIView 时没有注册点击手势。

我试过改变“目标”并在不同的地方添加手势。还看了其他帖子,但对我没有任何帮助。

谢谢

0 投票
0 回答
30 浏览

ios - 如何避免在 UItoolBar 中的 UIBarButtonItem 中同时启动两个 UIPopoverPresentationController

我正在将使用 UIPopoverController 的旧 iOS 应用程序转换为新的 UIPopoverPresentationController。我有两个弹出框(A 和 B),每个弹出框都是通过单击 UIToolBar 中的 UIBarButtonItem(butA,butB)启动的。我有每个弹出窗口都显示得很好。如果我在主视图中单击,弹出框会正确消失。

如果我按 butA popover A 出现。如果我然后按 butB 没有任何反应。在这种情况下,弹出框控制器 B 是从 UIBarButtonItem (butB) 呈现的。

如果我在 butA 和 butB 附近的 sourceRect 中显示弹出框,我会得到稍微不同的结果。点击butA,弹出框A出现。点击butB弹出框A消失。再次单击 butB,然后出现弹出框 B。

当我单击 butB 时弹出框 A 消失,我怎样才能让它正常工作?我试图将 ViewController A 作为 butB 按下操作的一部分解除,但此时的 ViewController A 对象为零。

任何帮助,将不胜感激。

0 投票
0 回答
208 浏览

uipopovercontroller - 更改 iOS 13 UIPopoverPresentationController 模糊和阴影量?

iOS 13 中 UIPopoverPresentationController 显示的模态弹出框视图的外观与 iOS 12 中的外观相比发生了显着变化。基色更深,背景阴影不同,弹出框下背景的模糊量非常不同。

如果我将弹出框内容的背景设置为纯色、非 alpha 透明颜色,我不会有任何问题,但我是,我无法弄清楚如何访问我的内容所在的视图/图层显示以改变事物。

将 的 设置为完全透明backgroundColorUIPopoverPresentationController东西(alpha = 0.0)不会给我一个完全透明的弹出框。我实现了一个UIPopoverPresentationControllerDelegate并尝试使用该prepareForPopoverPresentation:方法访问弹出框内容所在的视图并进行修改,但我似乎找不到它:superview()是 nil,并且UIPopoverPresentationController.presentedView()也是 nil(至少当那个委托时它们是方法被调用)。不是零,绝对是显示弹出框的UIPopoverPresentationController.containerView()覆盖视图……但这不是我要寻找的视图。

所以......我想知道我在这里错过了什么。我非常希望不必实现我自己的UIPopoverBackgroundView,因为popoverBackgroundViewClass尽管我知道这是一种可能性。

0 投票
1 回答
189 浏览

ipad - IPAD 从 UIAlertController 样式 UIAlertControllerActionSheet 呈现 UIActivityViewController “无法同时满足约束”

我将 UIAlertController 呈现为操作表,并带有一个按钮,该按钮应在选择时打开 ActivityView....

这两种方法都在同一个 ViewController 类中......并且在 iphone 8、iPhone Pro 11 Max 等上运行良好。但在 iPad 上测试时失败。(全部运行 13.5)

最初的失败是 popoverPresentationController 没有设置 sourceview 或 barbuttonitem (或类似的东西),所以我添加了以下行:

到分享方法。这让我过去了……所以,现在 IPAD 不会因 GenericException 崩溃……但它也不会出现 activityView。它只是抛出了一堆似乎与试图显示的 ActivityView 相关的约束违规,

)

但我对此没有设置任何限制......以及关于引用我的应用程序没有或使用的导航栏的投诉区域。这些约束必须来自一些仅与 IPAD 相关的默认设置。有谁知道我需要在这里做什么才能在 IPAD 上解决这个问题?为什么地狱是与我从未设置的东西相关的默认约束。我只设置了sourceView。

0 投票
1 回答
83 浏览

swift - Swift - Popover 控制器根据加载时间显示在错误的角落

我最近开始遇到一个问题,弹出框控制器有时会出现在错误的角落。当它正常工作时,弹出源是右上角的一个按钮。这是大多数时候发生的事情。现在,当我从特定路线“过快”登陆此页面时,弹出框会显示在左上角。

另一件奇怪的事情是,当加载被人为延迟时(比如我为调试设置断点时),弹出框会正确显示。

由于这似乎是一个时间问题,我尝试将导航配置从 viewDidLoad 移动到 viewDidAppear,但这不起作用。

这个函数是从 viewDidLoad 调用的:

0 投票
2 回答
65 浏览

ios - Catalyst 中弹出框的水平尺寸等级?

如果我在 iPad 上将视图控制器显示为弹出框(通过将其设置modalPresentationStyle.popover),它会将其水平尺寸类报告为.compact. 但是,如果我在 Catalyst 应用程序中运行相同的代码,弹出窗口中的视图控制器会报告水平大小类为.regular. 紧凑是我所期望的。overrideTraitCollection在我展示视图控制器之前设置popoverPresentationController它可以使大小类在 iPad 上正常化,但不会使其在 Catalyst 上变得紧凑。

如何使弹出窗口中的视图控制器正确报告 Catalyst 中的紧凑水平尺寸类?