我们有一个视图控制器,当单击它时会显示来自UIBarButtonItem
的弹出窗口。弹出窗口显示得很好,但是当我们单击弹出窗口内的“取消”按钮(调用dismiss(_:completion:)
或在弹出窗口外点击时,弹出窗口会消失。但是,显示弹出窗口的视图控制器内部的所有内容均不可单击。当我们检查视图层次结构时,我们可以看到弹出窗口及其UITrasitionView
仍在窗口中,并且正在阻塞视图控制器,即使在模拟器中该弹出窗口不再可见。可能是什么原因?
我们已经正确设置了弹出框控制器的buttonBarItem
,并且其显示正确。只是在问题被解决时才被驳回。
代码看起来像这样:
let controller = SettingsController() // the settings controller
controller.popoverPresentationController?.barButtonItem = sender // the UIBarButtonItem
self.present(controller, animated: true, completion: nil)
即使我们将SettingsController
替换为普通的UIViewController
,也没有任何改变。
P.S。呈现视图控制器的该视图控制器使用自定义过渡,但是在检查了带有断点的代码之后,我们认为这不是自定义过渡委托不参与呈现/关闭弹出窗口的原因。
答案 0 :(得分:1)
打开视图
let vc = SettingsController()
vc.modalPresentationStyle = .overCurrentContext
let nav = UINavigationController(rootViewController: vc)
self.present(nav, animated: true, completion: nil)
关闭视图
self.dismiss(animated: true, completion: nil)
答案 1 :(得分:0)
自我ViewController是否嵌入在导航控制器中?如果是这样,请尝试
self.navigationController.present(controller, animated: true, completion: nil)