У меня есть два UIBarButtonItems
на моем контроллере навигации:
segmentControl = UISegmentedControl(items: ["Up", "Down"])
infoItem = UIBarButtonItem(image: infoImage,
style: .plain,
target: self,
action: #selector(infoAction))
navigationItem.rightBarButtonItems = [infoItem, UIBarButtonItem(customView: segmentControl)]
При нажатии infoItem
Я делаю:
@objc func infoAction()
{
let popoverContentController = InfoViewController()
popoverContentController.preferredContentSize = CGSize(width: 300, height: 300)
popoverContentController.modalPresentationStyle = .popover
popoverContentController.popoverPresentationController?.delegate = self
popoverContentController.popoverPresentationController?.passthroughViews = nil
self.present(popoverContentController, animated: true, completion: nil)
}
Затем вызывается UIPopoverPresentationControllerDelegate
функций:
func prepareForPopoverPresentation(_ popoverPresentationController: UIPopoverPresentationController)
{
popoverPresentationController.permittedArrowDirections = .any
popoverPresentationController.barButtonItem = infoItem
popoverPresentationController.passthroughViews = nil
}
func adaptivePresentationStyle(for controller: UIPresentationController,
traitCollection: UITraitCollection) -> UIModalPresentationStyle
{
return .none
}
Несмотря на то, что я установил passthroughViews
на nil
дважды, UISegmentedControl
не обесцвечивается и остается всплывающим, пока всплывающее окно находится на экране.
Если показывается любой другой всплывающий элементUISegmentedControl
ведет себя нормально: обесцвечивается и не наносится.
Что мне здесь не хватает?