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