Отключить закрытие всплывающего окна в фоновом режиме Tap Swift

У меня есть главный контроллер представления с именем 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)

    }

person Martheli    schedule 20.07.2017    source источник
comment
ты выставил делегата? Разместите свой код   -  person Bilal    schedule 20.07.2017
comment
@Bilal Я обновил свой вопрос.   -  person Martheli    schedule 20.07.2017
comment
@Bilal Правильно, забыл добавить popover.popoverPresentationController?.delegate = self as? UIPopoverPresentationControllerDelegate. Если вы создадите это как ответ, я проголосую за вас.   -  person Martheli    schedule 20.07.2017


Ответы (2)


Установите делегата.

popover.popoverPresentationController?.delegate = self
person Bilal    schedule 20.07.2017

Функция popoverPresentationControllerShouldDismissPopover устарела в iOS 14.

Для последней версии вы должны использовать следующий код

extension TestViewController: UIPopoverPresentationControllerDelegate {
        func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
             return false
        }
    }
person Aqeel Ahmad    schedule 18.09.2020