Isso não é algo que pode se encaixar em algumas linhas de código, mas é uma abordagem que pode funcionar para você.
Para ocultar a barra de navegação:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Para mostrá-lo:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
A documentação para este método está disponível aqui .
Para ouvir um "clique duplo" ou toque duas vezes, subclasse UIView
e faça com que uma instância dessa subclasse seja sua view
propriedade do controlador de exibição .
Na subclasse de exibição, substitua seu -touchesEnded:withEvent:
método e conte quantos toques você obtém em um período de tempo, medindo o tempo entre dois toques consecutivos, talvez com CACurrentMediaTime()
. Ou teste o resultado em [touch tapCount]
.
Se você der dois toques, sua visualização em subclasse emitirá uma NSNotification
que seu controlador de visualização registrou para escutar.
Quando o seu controlador de exibição ouve a notificação, ele dispara um seletor que oculta ou mostra a barra de navegação usando o código mencionado acima, dependendo do estado visível atual da barra de navegação, acessado através da leitura da isHidden
propriedade da barra de navegação .
EDITAR
A parte da minha resposta para lidar com eventos de toque provavelmente é útil antes do iOS 3.1. A UIGestureRecognizer
classe é provavelmente uma abordagem melhor para lidar com toques duplos hoje em dia.
EDIT 2
A maneira rápida de ocultar a barra de navegação é:
navigationController?.setNavigationBarHidden(true, animated: true)
Para mostrá-lo:
navigationController?.setNavigationBarHidden(false, animated: true)