2009-08-14 12 views
8

Soy un poco nuevo en el desarrollo de iPhone y no he hecho nada con toques de participación. Mi vista de jerarquía así:Detectando el toque para Mostrar u ocultar UINavigationBar

UIView - UIImageView - UIScrollView - CustomView 

¿Cómo puedo detectar si el usuario ha aprovechado en cualquier lugar de la pantalla para que pueda mostrar/ocultar la barra de navegación en consecuencia? No necesito la interacción del usuario en mi CustomView, pero me gustaría ignorar los toques en UIScrollView cuando el usuario simplemente quiere arrastrarlo.

ya puedo mostrar/ocultar la barra de navegación de mi controlador de vista utilizando programáticamente:

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

Gracias de antemano!

Respuesta

5

Puede utilizar el método touchesBegan en UIView para detectar el toque, por lo que tendrá que tener una subclase personalizada de UIView para la vista del controlador de vista en la que desea detectar los toques. Luego deberá usar el delegado para enviar un mensaje al controlador de su vista para que pueda ocultar el navigationBar.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSUInteger numTaps = [[touches anyObject] tapCount]; 
    if (numTaps == 1) 
    { 
     [delegateController tapDidOccur]; 
    } 
} 
+0

Esto funciona. Gracias. Ahora estoy teniendo un problema al enviar el evento al delegado itsef. ¿Debo extender la interfaz UIScrollViewDelegate para declarar un método tapDidOccur? – leolobato

+0

Anulé el @ delegado @property en mi subclase de UIScrollView para implementar un protocolo "tappable" con mi método "tapDidOccur" y funcionó bien ahora. ¡Gracias! – leolobato

16
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showHideNavbar:)]; 
[self.view addGestureRecognizer:tapGesture]; 
[tapGesture release]; 

-(void) showHideNavbar:(id) sender { // write code to show/hide nav bar here } 

Esta es la manera de hacerlo utilizando UIGestureRecognizers disponibles en iOS4

+2

Esta es una solución más limpia y más elegante si puede permitirse apuntar únicamente a iOS 4+. –

+0

¿Cuál es el mejor lugar para registrar esto? Estoy pensando en viewDidAppear. –

+1

Mejor vista interiorDidLoad – Mugunth

Cuestiones relacionadas