禁用在背景上关闭Popover Tap Swift

时间:2017-07-20 02:56:10

标签: swift uipopovercontroller

我有一个名为TestViewController的主视图控制器,它有一个按钮,当你点击按钮时,它会打开一个弹出视图控制器。当您点击背景时,弹出窗口将被解除,这是我想要禁用的。我在我的popover视图控制器中有这个代码,它应该运行但它没有运行。

extension TestViewController: UIPopoverPresentationControllerDelegate {

    func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
        print ("TEST") //This does not show up in console

        return false
    }
}

修改

这是我用来打开popover的代码。

let popover = storyboard?.instantiateViewController(withIdentifier: "PopoverVC") as! PopOverViewController

        popover.modalPresentationStyle = .popover

        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)


        popoverPresentationController?.passthroughViews = nil

        popover.dimView2 = self.dimView2

        dimView2.isHidden = false

        self.present(popover, animated: false)

    }

2 个答案:

答案 0 :(得分:3)

设置代理。

popover.popoverPresentationController?.delegate = self

答案 1 :(得分:0)

popoverPresentationControllerShouldDismissPopover 函数在iOS 14中已弃用。

对于最新版本,您应该使用以下代码

extension TestViewController: UIPopoverPresentationControllerDelegate {
        func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
             return false
        }
    }