Swift 雨燕3爆米花暗淡的背景

Swift 雨燕3爆米花暗淡的背景,swift,uiview,Swift,Uiview,我读了很多地方,都有关于如何实现这一目标的建议。我在后台添加了一个UI视图,并将其设置为禁用,然后在显示popover后,将视图设置为启用 正如您所看到的,它看起来工作得很好: 但我确实有两个问题。第一种方法是,一旦弹出popover,您可以点击背景上的任何位置来关闭popover。有什么地方可以阻止这种事情发生吗?我认为我的背景视图会阻止任何输入 此外,在弹出框关闭后,屏幕仍然暗淡。我尝试了以下操作,但在禁用popover后,这两个操作都没有加载,因此视图永远不会设置为禁用: overrid

我读了很多地方,都有关于如何实现这一目标的建议。我在后台添加了一个UI视图,并将其设置为禁用,然后在显示popover后,将视图设置为启用

正如您所看到的,它看起来工作得很好:

但我确实有两个问题。第一种方法是,一旦弹出popover,您可以点击背景上的任何位置来关闭popover。有什么地方可以阻止这种事情发生吗?我认为我的背景视图会阻止任何输入

此外,在弹出框关闭后,屏幕仍然暗淡。我尝试了以下操作,但在禁用popover后,这两个操作都没有加载,因此视图永远不会设置为禁用:

override func viewDidAppear(_ animated: Bool) {
         dimView.isHidden = true
    }

override func viewWillAppear(_ animated: Bool) {
         dimView.isHidden = true
    }
编辑:

这是我用来展示popover的代码:

  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不在PopoverVC中,请将其添加到PopoverVC中,并在点击它时处理Disclose。在解除POVER后,ViewDidDisplay和ViewWillDisplay将不会被调用。因此,您的屏幕仍然模糊。如果您将dimView添加到Popover中,希望您能够解决这些问题

我认为您可以使用UIPopoverPresentationControllerDelegate和协议/委托解决您的两个问题,以告知演示视图控制器何时取消并隐藏您的dimView

第一个问题可以这样实现:

extension YourViewController: UIPopoverPresentationControllerDelegate {

    func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
        return false
}
对于第二个问题,您可以通过委托传递函数。希望这个链接能对此有所帮助


Cheers

used dimView.isHidden=true在dissmiss视图控制器视图中未显示,未调用如何将其添加到POPOOVERVC?目前它是主视图控制器中的一个插座如何将其添加到popoverVC?当前它是主视图控制器中的一个出口。