【发布时间】:2018-12-31 05:48:13
【问题描述】:
我们有一个视图控制器在单击时显示来自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,也不会发生任何变化。
附:这个呈现视图控制器的视图控制器使用自定义转换,但是在检查带有断点的代码后,我们认为这不是自定义转换委托未参与弹出框的呈现/关闭的原因。
【问题讨论】:
-
能把dismiss的代码加进去吗?
-
你有没有像
progress indicator这样的ui任务在后面跑?
标签: ios swift uiviewcontroller popover uipopovercontroller