iOS Popover 显示在 TextView 上

Posted

技术标签:

【中文标题】iOS Popover 显示在 TextView 上【英文标题】:iOS Popover Is Displaying On TextView 【发布时间】:2015-10-09 23:02:24 【问题描述】:

我已将弹出框实现为 UIViewController 演示文稿。我使用 Popover 和 UIPopoverPresentationController 的模态展示风格作为主视图。

let popoverViewController = segue.destinationViewController as! SearchTableViewController
self.searchTableViewController = popoverViewController
popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
popoverViewController.popoverPresentationController!.delegate = self

我的问题是弹出框显示在它们锚定到的 TextView 上。

例如:

这是我在故事板上连接 TextView 和弹出框的方式:

有谁知道为什么弹出框指向这个 TextView 的左上角?这在 ios 8 上运行良好,但在 iOS9 中弹出窗口略有变化。

【问题讨论】:

【参考方案1】:

我不确定为什么会发生这种情况,但快速的解决方案是将框架移动到您想要的位置。我用下面的代码做到了这一点:

let absoluteframe = patientTextField!.convertRect(patientTextField!.frame, fromView: self.scrollView)
popoverViewController.popoverPresentationController!.sourceRect = CGRectMake(absoluteframe.minX + 60,absoluteframe.minY + 20,0,0)

首先,您需要获取弹出窗口所锚定到的项目的框架。然后,您可以通过使用当前 x 和 y 值更新矩形位置来设置 sourceRect。希望这可以帮助任何有类似问题的人!

【讨论】:

以上是关于iOS Popover 显示在 TextView 上的主要内容,如果未能解决你的问题,请参考以下文章

添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)

《iOS Human Interface Guidelines》——Popover

iOS:从 popOver 刷新 ViewController

是否可以在其他 UI 元素后面显示 Popover?

iOS 5.1.1 Popover 不会自动关闭

简单好用可任意定制的iOS Popover气泡