Я сделал это, вызвав метод dismiss, как показано ниже
даю расширение приложения Safari, используя XCode 8.3 и Swift 3, следуяРуководство по программированию расширения приложения Safari, Расширение включает в себятрещать появляется при нажатии на элемент панели расширения. Всплывающее окно содержит несколько кнопок, связанных с действиями, которые может выполнять пользователь.
Я хочу нажать одну из этих кнопок, чтобы закрыть поповер после того, как его действие выполнено. По умолчанию щелчок в любом месте за пределами всплывающего окна закрывает его, но я не смог найти другого способа закрыть всплывающее окно, ни в руководстве, ни вдокументы.
я знаю этоNSPopover имеетperformClose
метод, но, кажется, нет способа получить доступ к самому поповеру из расширения: расширение приложения позволяет только предоставитьSFSafariExtensionViewController, чье содержимое волшебным образом появляется в поповере.
Я также пытался использоватьdismissViewController
как описано вэтот ответ StackOverflow, но на мой взгляд контроллерself.presenting
всегда ноль, иself.dismissViewController(self)
просто вылетает расширение с сообщением:
dismissViewController:: Error: maybe this view controller was not presented?
.
Наконец, я заметилсвязанный вопрос о программнооткрытие всплывающее окно элемента панели инструментов за последние 6 месяцев осталось без ответа. Это заставляет меня подозревать, что у Apple могут быть строгие ограничения на то, как можно открывать и закрывать поповер. Даже если это так, было бы неплохо знать наверняка, каковы ограничения.