Мне нужно отключить модальные диалоги при нажатии за пределами его области.Это работает автоматически, когда представление определено в раскадровке и представлено так:
let storyboard = UIStoryboard(name: "Services", bundle: nil)
let pinCodeController = storyboard.instantiateViewController(withIdentifier: "PinCodeController")
pinCodeController.modalPresentationStyle = .popover
pinCodeController.preferredContentSize = CGSize(width: 200, height: 300)
let presentationController = pinCodeController.popoverPresentationController
presentationController?.sourceView = pinCodeButton
self.present(pinCodeController, animated: true)
Однако, поскольку я не использую раскадровки, у меня почти такой же код для представления моего представления.Этот код представляет представление, но он не отклоняется при нажатии за пределами его границы.
popoverFromSourceController.modalPresentationStyle = .popover
popoverFromSourceController.preferredContentSize = CGSize(width: 200, height: 300)
let presentationController = popoverFromSourceController.popoverPresentationController
presentationController?.sourceView = self.popoverFromSourceViewButton
present(popoverFromSourceController, animated: true)
Кто-нибудь может увидеть, в чем разница и почему поведение отличается?Нужно ли каким-то образом добавлять событие щелчка к базовому представлению, чтобы отклонить всплывающее окно?
У меня та же проблема, но несколько отличающаяся при представлении этого самого всплывающего окна из UIBarButtonItem.Мой навигационный контроллер имеет две кнопки, и когда диалоговое окно отображается с помощью первой кнопки, оно автоматически закрывается при нажатии на вторую кнопку.Но нажатие на главном экране не закрывает диалоговое окно.
Полный исходный код: https://github.com/igunther/CleanController
Кто-нибудь?
Обновление
Добавлен этот код, но все еще не работает:
popoverFromSourceController.isModalInPopover = false