在后台点击 Swift 时禁用关闭弹出框

Posted

技术标签:

【中文标题】在后台点击 Swift 时禁用关闭弹出框【英文标题】:Disable Dismiss Popover On Background Tap Swift 【发布时间】:2017-07-20 02:56:10 【问题描述】:

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

extension TestViewController: UIPopoverPresentationControllerDelegate 

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

        return false
    

编辑:

这是我用来打开弹出框的代码。

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)

    

【问题讨论】:

你设置了代理吗?发布您的代码 @Bilal 我更新了我的问题。 @Bilal 你说得对,我忘了加popover.popoverPresentationController?.delegate = self as? UIPopoverPresentationControllerDelegate。如果您将其创建为答案,我会为您投票。 【参考方案1】:

设置委托。

popover.popoverPresentationController?.delegate = self

【讨论】:

【参考方案2】:

popoverPresentationControllerShouldDismissPopover 函数在 ios 14 中已弃用。

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

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

【讨论】:

以上是关于在后台点击 Swift 时禁用关闭弹出框的主要内容,如果未能解决你的问题,请参考以下文章

Swift:弹出框关闭回调

updatepanel 里面放ASPxGridView,使用RegisterClientScriptBlock方法,弹出框弹不出

当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭

用jquery如何点击button按钮调用后台方法查询数据返回到弹出框内

在 Swift 中点击按钮时显示一个弹出框

隐藏弹出框控制器