问题标签 [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 投票
0 回答
253 浏览

ios - 如何在使用多个 UIPopoverPresentationController allowedArrowDirections 时将首选项设置为一个箭头方向?

我正在制作一个弹出式演示视图控制器,我需要在其中使用多个箭头方向(updown)。为了拥有多个permittedArrowDirections,我在 Swift 的 UIPopoverController 上遵循了 Set Multiple Arrow Directions。我还调整了弹出框的背景颜色,使箭头与背景调光视图融为一体。

问题是,对于几乎所有情况,我都需要使用 ,UIPopoverArrowDirection.up但对于源视图正下方没有足够空间的情况,只有UIPopoverArrowDirection.down应该使用 。但我找不到弄清楚。代码片段是:

为了清楚起见,我附上了当前的输出: 弹出首选箭头方向

如果有人需要跟进,可以在这里找到我尝试过的演示的源代码。

0 投票
3 回答
603 浏览

uipopovercontroller - UIModalPresentationPopover - 箭头方向向上,防止 Contentview 从箭头尖端开始

在 iOS 13 中,作为模型呈现的 UIViewcontroller 的视图恰好从箭头的尖端开始。因为它,我所有弹出窗口中的顶部横幅都被剪掉了。我可以防止这种情况发生吗?我希望我的 UIView 不是从箭头开始,而是在箭头完成后。红色视图必须从箭头底部开始

0 投票
1 回答
83 浏览

ios - Popoverview 不以 iPad 旋转为中心

在 iPad 旋转时,iPad 上的以下代码弹出框不会以第二个警报(城市)为中心。不过,它适用于第一个警报(国家)。我已经打印了这些值,两个警报都是一样的。似乎尽管坐标值正确,但它并没有在设备旋转的中心显示第二次警报。

为什么它没有显示在第二个警报的中心?如何解决?

0 投票
9 回答
8203 浏览

popover - iOS 13 - UIPopoverPresentationController sourceview 内容在箭头中可见

当我在 UIPopoverPresentationController 中显示一些视图并将其呈现为弹出框时

内容已向上移动,并且箭头中显示了某个部分。

在此处输入图像描述

此外,我在弹出框周围有边框

它没有向箭头所在的部分显示,但它在箭头的尖端显示了一点边界线。

在此处输入图像描述

这在 iOS 12 之前工作正常,但在 iOS 13 中,这个问题即将到来。

关于如何解决这个问题的任何建议?

0 投票
1 回答
686 浏览

ios - popover allowedArrowDirections = .left/.right 与 popover 框架混淆

自从迁移到 Swift 5 后,已将 allowedArrowDirections 设置为 .left/.right 的弹出框渲染得稍微偏离了它们应该在的位置。但是,当将 allowedArrowDirections 设置为 .top/.bottom 时,问题就消失了。请看下图:

弹出窗口问题

我将弹出窗口设置如下:

有没有人提出这个问题?如何解决?

提前致谢

0 投票
0 回答
81 浏览

ios - 动画 UIPopoverPresentationController 视图的中心位置

总的来说,我的目标是在屏幕上呈现一个自定义 UIViewController 作为一种“小部件”。该视图将从我的根视图的起点开始其中心进行动画处理,然后移动视图直到它位于根视图的中心。这个呈现的视图应该能够为其自己的高度和宽度设置动画。

目前,我正在使用 ViewController 以及具有UIPopoverPresentationController自定义 empty 和 transparent 的popoverBackgroundViewClass。我正在使用一个弹出控制器,以便我可以使用我的 viewControllerpreferredContentSize作为一种方式来允许“弹出”视图轻松更改其自身的高度和宽度。(如果弹出式演示控制器不适合处理这样的事情,我很想知道)

我在使用 a 时遇到的问题UIPopoverPresentationController是我可以设置它的位置,self.popoverPresentationController.sourceRect = CGRectMake(point.x, point.y, 0,0);其中 wherepoint指的是确定弹出视图中心的 CGPoint。如果我能以某种方式将这个弹出视图的中心从一个点设置为另一个点,这将解决我所有的问题,但我想不出任何能让这项工作正常进行的方法。

我不知道这是否是我对这类事情的经验不足,但我尝试过的每一种方法都感觉很老套,所以非常感谢以正确方式做这件事的任何帮助。

0 投票
1 回答
631 浏览

ios - Popoverpresentation viewcontroller 和约束​​问题

我尝试调用 popoverpresentation 视图控制器以在 ipad 上共享图像,但是当发生这种情况时,我收到错误“无法满足约束”。

问题是为了解决这个问题,我删除了所有约束,所以我可以重新开始,但即使没有约束,我也会遇到同样的错误。

所以我的问题是。这是一个错误还是我必须为 popoverpresentation 视图控制器设置约束。

这是我的代码:

控制台中的错误:

0 投票
1 回答
612 浏览

ios - 呈现一个没有 segue 的弹出框——弹出框仍然是全屏的

我有一个 UIViewController,里面有一个我以编程方式制作的按钮(我们就叫它 MyViewController)。我试图在点击按钮时显示一个弹出框。让我们调用弹出框 DestinationViewController。点击该按钮将调用以下函数:

(我注释掉了 sourceRect 行,因为它什么也没做,但我不知道我是不是用错了。)

此外,我确保 MyViewController 符合 UIPopoverPresentationControllerDelegate 协议。所以 MyViewController 实现了功能:

最后,在我的 DestinationViewController 故事板中,我选中了“使用首选显式大小”框,宽度为 200,高度为 100。

但是,我的 DestinationViewController 仍然全屏显示。我已经读到adaptivePresentationStyle 函数应该防止这种情况,但没有运气。我知道使用转场会使其正常工作,但我无法在情节提要中进行转场,因为我的按钮是以编程方式制作的。

关于我应该做些什么来解决这个问题的任何想法?我对制作popovers不太熟悉,所以我需要一些帮助。

0 投票
2 回答
357 浏览

swift - Swift:将 UIBarButtonItem 设置为无需点击的弹出窗口的源?

我想在我的视图加载后立即在 iPad 上显示一个弹出窗口,并将右上角的按钮作为源。弹出窗口在按钮点击时正确显示,但是当页面首次加载时,我无法找到一种在没有按钮点击的情况下显示它的方法。这可能吗?

这就是我所拥有的:

此代码在按钮点击时正常工作,但如果我尝试从 viewDidLoad 或 viewDidAppear 调用此函数,应用程序会崩溃:

您必须通过警报控制器的 popoverPresentationController 提供此弹出窗口的位置信息。您必须提供 sourceView 和 sourceRect 或 barButtonItem。

0 投票
0 回答
174 浏览

keyboard - 使用 TextField 显示弹出框 - 键盘导致闪烁

我想知道是否有人使用 PopoverPresentationController 遇到了奇怪的闪烁/动画。当有一个 textField 成为第一响应者时会发生闪烁。弹出框似乎几乎在现有弹出框的顶部重新打开。

步骤/应用程序细分:

MainViewController - 带有 tableview 的 UIViewController

PopoverView - 带有简单 TextField 的 UIViewController



1) 单击一个单元格

2) 启动弹出框
3) 单击 textField

如果我在 RowSelected 中更改以下行:

至:

闪烁停止但是如果弹出框链接到屏幕上不同位置的表格视图单元格,则无济于事。