iOS Popover не уходит после ухода - PullRequest
0 голосов
/ 31 декабря 2018

У нас в контроллере представления отображается поповер из UIBarButtonItem при нажатии.Всплывающее окно отображается нормально, но когда мы нажимаем кнопку «Отмена» внутри всплывающего окна, которое вызывает dismiss(_:completion:), или когда мы нажимаем вне всплывающего окна, всплывающее окно исчезает.Тем не менее, все в контроллере представления, который представил поповер, остается не щелкаемым.Когда мы проверили иерархию представления, мы можем видеть, что поповер вместе с его UITrasitionView все еще находится в окне и блокирует контроллер представления позади него, даже если в симуляторе поповер больше не виден.В чем может быть причина?

Мы правильно установили buttonBarItem контроллера поповера, и он правильно отображается.Проблема возникает только тогда, когда она отклоняется.

Код выглядит так:

let controller = SettingsController() // the settings controller
controller.popoverPresentationController?.barButtonItem = sender // the UIBarButtonItem
self.present(controller, animated: true, completion: nil)

Ничего не меняется, ДАЖЕ, если мы заменим SettingsController на простой UIViewController.

PS Этот контроллер представления, который представляет контроллер представления, использует пользовательский переход, но после проверки кодов с точками останова мы считаем, что это не является причиной того, что пользовательский делегат перехода не участвует в представлении / отклонениитрещать.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

встроен ли собственный ViewController в контроллер навигации?Если это так, попробуйте self.navigationController.present(controller, animated: true, completion: nil)

0 голосов
/ 31 декабря 2018

Чтобы открыть представление

let vc = SettingsController()
vc.modalPresentationStyle = .overCurrentContext
let nav = UINavigationController(rootViewController: vc)
self.present(nav, animated: true, completion: nil)

Чтобы закрыть представление

self.dismiss(animated: true, completion: nil)
...