【发布时间】:2017-07-19 03:47:45
【问题描述】:
我已经阅读了多个关于如何完成此操作的建议。我在后台添加了一个 UI 视图并将其设置为禁用,然后在显示弹出框后,将视图设置为启用。
如您所见,它看起来运行良好:
但我确实有两个问题。第一个是出现弹出框后,您可以点击背景上的任意位置以关闭弹出框。有什么地方可以阻止这种情况发生吗?我假设我的后台 UIView 会阻止任何输入。
此外,弹出框关闭后,屏幕仍然很暗。我尝试了以下操作,但在关闭弹出框后它们都没有加载,因此视图永远不会被设置为禁用:
override func viewDidAppear(_ animated: Bool) {
dimView.isHidden = true
}
override func viewWillAppear(_ animated: Bool) {
dimView.isHidden = true
}
编辑:
这是我用来呈现弹出框的代码:
let popover = storyboard?.instantiateViewController(withIdentifier: "PopoverVC")
popover?.modalPresentationStyle = .popover
popover?.popoverPresentationController?.delegate = self as? UIPopoverPresentationControllerDelegate
popover?.popoverPresentationController?.sourceView = self.view
popover?.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
popover?.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
dimView.isHidden = false
self.present(popover!, animated: false)
【问题讨论】:
-
在关闭视图控制器视图中使用的 dimView.isHidden = true 似乎没有调用
-
如何将其添加到 popoverVC?目前它是主视图控制器中的一个出口