UIPopoverController não dispensado quando aberto a partir de self.navigationItem (dentro de UINavigationController)

Eu tenho um problema ao descartar um popover que foi iniciado a partir do navigationItem de um UINavigationController. Parece que o item de navegação que é inserido pelo UINavigationController não aciona a dispensa do UIPopoverController. Normalmente, quando você toca fora de um popover, é obscurecido. Mas quando você toca no item de navegação, o popover não é descartado. Pior, se você tocar no botão que aciona o popover, você terá uma segunda instância do popover.

Tudo isso é feito usando storyboards: - Crie uma visualização, incorpore-a em um UINavigationView para obter um navigationItem na parte superior. - Coloque um UIBarButtonItem no navigationItem (esquerdo ou direito, não importa para a visão inicial na pilha de navegação). - Defina outra visualização e arraste um segue do UIBarButtonItem para essa visualização. - Defina o segue para ser popover.

Quando o popover estiver aberto, não posso descartá-lo tocando no navigationItem. Eu não posso acreditar que isso "funciona como projetado", então eu suspeito que perdi alguma coisa.

Embora meu objetivo seja programar o mínimo possível (é sobre isso que os storyboards são, não são?), Pensei em soluções alternativas: a primeira solução que me veio à mente foi adicionar um UITapGestureRecognizer ao navigationItem, que dispensaria popover quando detectou um toque no navigationItem. Infelizmente, o navigationItem parece não ser UIVIew, então ele não possui o método addGestureRecognizer: ...

EDIT: É possível adicionar um UITapGesturerecognizer a self.navigationController.navigationBar, mas impede que qualquer toque atinja os UIBarButtonItems na barra de navegação. Sim, eu poderia ter esperado isso.

Muito obrigado pela ajuda, nobi

questionAnswers(4)

yourAnswerToTheQuestion