Ce n'est pas quelque chose qui peut tenir dans quelques lignes de code, mais voici une approche qui pourrait fonctionner pour vous.
Pour masquer la barre de navigation :
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Pour la montrer :
[[self navigationController] setNavigationBarHidden:NO animated:YES];
La documentation pour cette méthode est disponible ici.
Pour écouter un "double-clic" ou double-tap, sous-classez UIView
et faites une instance de cette sous-classe votre propriété view
du contrôleur de vue.
Dans la sous-classe de vue, remplacez sa méthode -touchesEnded:withEvent:
et comptez combien de pressions vous recevez dans une durée déterminée, en mesurant le temps entre deux tapes consécutives, peut-être avec CACurrentMediaTime()
. Ou testez le résultat de [touch tapCount]
.
Si vous obtenez deux tapes, votre vue sous-classée émet une NSNotification
que votre contrôleur de vue a enregistré pour écouter.
Lorsque votre contrôleur de vue entend la notification, il déclenche un sélecteur qui cache ou montre la barre de navigation en utilisant le code mentionné ci-dessus, selon l'état visible actuel de la barre de navigation, accessible en lisant la propriété isHidden
de la barre de navigation.
ÉDITION
La partie de ma réponse pour gérer les événements de tap est probablement utile avant iOS 3.1. La classe UIGestureRecognizer
est probablement une meilleure approche pour gérer les double-taps de nos jours.
ÉDITION 2
La manière Swift de cacher la barre de navigation est :
navigationController?.setNavigationBarHidden(true, animated: true)
Pour la montrer :
navigationController?.setNavigationBarHidden(false, animated: true)