问题标签 [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 回答
375 浏览

swift - 没有覆盖的 UIPopoverPresentationController

我正在使用 UIPopoverPresentationController 实现一个弹出视图。

在此处输入图像描述

这样做的问题是,默认情况下,我有一个用于控制器的大半径阴影。

我想禁用它 - 覆盖。

我努力了:

  1. 自定义布局阴影(使用 UIPopoverBackgroundView):

    /li>
  2. 在视图调试中 - 我可以在弹出的 4 个带有灰色渐变背景的图像视图后面看到:

在此处输入图像描述

我确信这是一种默认行为,即在弹出框后面显示叠加层。

如何禁用此功能?

我找到了这个这个。但那些没有帮助。

0 投票
2 回答
3033 浏览

ios - ViewController 内容大小不会改变弹出框大小

弹出框的首选尺寸仅在高度大于 320 时有效。

我已经搜索了很多来解决这个问题。但没有找到任何答案。弹出框在 iPad 中是否应满足任何最小尺寸?如果没有,我错过了什么?

代码:

注意: 我试过了,adaptivePresentationStyleForPresentationController:&adaptivePresentationStyleForPresentationController:返回UIModalPresentationNone

0 投票
1 回答
97 浏览

objective-c - 处理 UIPopovers 的旧方法不起作用;复制代码,现在崩溃

****更新**得到以下崩溃:[UploadViewController _viewForPresenting]:无法识别的选择器发送到实例0x7abe4c00**

旧的使用 UIPopOvers 的方式在 iOS 8 中被弃用了;所以我尝试升级;不幸的是,它不起作用。我没有得到弹出框本身,只是底部当前视图的顶部(参见此处的图片)。我确定这里缺少一些东西,但是在花了 2 天之后,我没有看到问题。我已经远离编码工作,所以我请求帮助解决这个编码问题。这是我的代码(从这里复制和修改):

0 投票
1 回答
497 浏览

ios - UIPopoverPresentationController : 多个 allowedArrowDirections 顺序优先级

使用UIPopoverPresentationController在弹出窗口中呈现视图控制器,您可以定义permittedArrowDirections属性来限制弹出窗口定位的可能性。我们可以使用|operator 定义多个方向:

我知道控制器会根据可用空间自动选择这些方向之一。

但是可以定义订单优先级吗?这样:如果AB两个方向都有足够的空间,请优先使用A。

我试图颠倒 and 的顺序UIPopoverArrowDirectionDownUIPopoverArrowDirectionUp但它似乎总是优先考虑UIPopoverArrowDirectionDown

有没有人有实现这一目标的想法?

0 投票
2 回答
811 浏览

ios - 当源视图在 Swift 中更改时,如何更新弹出框的布局(位置)?

我想更新弹出框的布局,我已经尝试过使用setNeedsLayout()andlayoutIfNeeded()方法但找不到解决方案。

我有一个简单的屏幕,有 4 个调用弹出框的按钮,在弹出框内有 2 个额外的按钮:

  1. Button -> 隐藏 button3,并将 button1 和 button2 向左移动。
  2. 重新定位 -> 将弹出框的源视图从 button1/2/3/4(发送者)更改为 button4。 布局图

我遇到的问题是我无法更新/刷新屏幕,并且弹出框一直指向以前的源视图位置。 弹出框的图片

不知何故,我需要一种方法来更新我的视图,并且比layoutIfNeeded()因为如果屏幕从纵向/横向更改,弹出框会自动更改。在这里我改变了肖像/风景/肖像

项目的 GitHub。GitHub

使用的代码如下:

和弹出控制器:

0 投票
1 回答
38 浏览

ios - 在常规尺寸的 iPhone 上与 UIPopoverPresentationController 的内容进行交互?

看起来 - 至少在默认情况下,虽然您可以在 plus iPhone 上与弹出框的内容交互并通过点击背景将其关闭,但在普通的非 plus 手机上,行为是相反的。

有谁知道如何纠正和/或配置此问题,以便您可以与普通 iPhone 上的弹出框交互?

我有一个在这里演示问题的示例:
https://github.com/chrisco314/iPhone-Popover-Test

但相关代码是:

谢谢!

0 投票
1 回答
6437 浏览

ios - 如何在 iPhone 中使用弹出框控制器

我无法在 iPhone 中将 popover 控制器显示为 popover,而它与 iPad 配合得很好。

关于如何在 iPhone 中做到这一点的任何想法。

据我搜索,我找不到任何东西。

无论如何,让弹出框出现在 iphone 中,就像它在 iPad 中一样,值得赞赏!

0 投票
0 回答
584 浏览

ios - 应用程序在第二次呈现视图(弹出框)时崩溃

我刚刚偶然发现了这个问题,想知道是否有人可以帮助解释这个问题。

在 iPad 上使用时,我的视图有一个嵌套UINavigationController显示在弹出框内。我最近一直在将此代码转换为 Swift 并尝试使用延迟初始化,如下所示:

注意 menuView 和 menuButton 也是延迟初始化的

然后,我尝试将视图呈现如下:

我第一次打开菜单时一切正常,菜单按预期显示。但是,如果我通过点击屏幕的另一个区域来关闭菜单,然后再次尝试重新打开它,则会出现以下崩溃:

UIPopoverPresentationController () 应该在演示发生之前设置一个非零的 sourceView 或 barButtonItem。

openMenu()如果我对函数进行以下更改,此崩溃就会消失:

那么上面的修复是必要的吗?我是否遗漏了任何可以在惰性初始化块中设置的明显内容?


(来自示例项目的崩溃日志)

2018-06-29 21:13:09.836061+0100 PopoverBugExample[90568:1465443] * 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“UIPopoverPresentationController () 应该在演示发生之前设置非零 sourceView 或 barButtonItem。 ' *第一次抛出调用堆栈:(0 CoreFoundation 0x0000000110c4b7f6 exceptionPreprocess + 294 1 libobjc.A.dylib
0x000000010f2a3035 objc_exception_throw + 48 2 UIKitCore
0x0000000113323a0e -[UIPopoverPresentationController 6183 UIKitCore PresentationTransitionWillBegin] + 3
0x000000011332d568 __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 2495 4 UIKitCore 0x000000011332ab5c __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 468 5 UIKitCore
0x0000000112fd8965 _runAfterCACommitDeferredBlocks + 318 6
UIKitCore 0x0000000112fc77d3 _cleanUpAfterCAFlushAndRunDeferredBlocks + 397 7 UIKitCore 0x0000000112ff7131 _afterCACommitHandler + 141 8 CoreFoundation
0x0000000110baee97 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
+ 23 9 CoreFoundation 0x0000000110ba92ce __CFRunLoopDoObservers + 430 10 CoreFoundation 0x0000000110ba9971 __CFRunLoopRun + 1553 11 CoreFoundation
0x0000000110ba9021 CFRunLoopRunSpecific + 625 12 GraphicsServices
0x000000011825c16e GSEventRunModal + 62 13 UIKitCore
0x0000000112fcd3ff UIApplicationMain + 140 14 PopoverBugExample
0x000000010e97c857 main + 71 15 libdyld.dylib
0x00000001120dce61 start + 1 16 ???
0x0000000000000001 0x0 + 1 ) libc++abi.dylib:以 NSException 类型的未捕获异常终止

0 投票
2 回答
1255 浏览

ios - popover 在 swift 4 中不起作用

我正在使用 UIPopoverPresentationControllerDelegate 来显示我的弹出框,它工作正常,但无法管理弹出框 viewController 的宽度和高度。以及如何在当前上下文中设置演示文稿?

0 投票
1 回答
595 浏览

swift - 以编程方式创建的 UIPopoverPresentationController 填充屏幕

我以编程方式创建的弹出窗口填满了屏幕。从示例代码中可以看出,我尝试了很多方法来限制它的大小,但都没有奏效。此外,没有调用委托方法。有任何想法吗?我过去曾成功地将 CALayer 用于这种事情,但认为这会更简单——也许不会。