iOS 弹出窗口显示在 TextView 上

iOS Popover Is Displaying On TextView

我已经将弹出窗口实现为 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 中略有移动。

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

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

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