Ocultar barra de herramientas en la parte inferior de UiWebView cuando se desplaza hacia abajo

Tengo el siguiente código que oculta con éxito la barra de herramientas inferior cuando NO se encuentra en la parte superior de la vista web, como se muestra en las imágenes adjuntas. (abajo)

Lo que trato de hacer es ocultar la barra de herramientas por completo y luego expandir la vista web para ocupar el espacio extra (similar a cómo lo hace Safari). ¡Cualquier ayuda sería genial!

- (void)viewDidLoad { [super viewDidLoad]; if (self.url != nil) { [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[StoreWebViewController checkAndPrependProtocolForUrl:self.url]]]]; self.webView.delegate = self; } for (id subview in self.webView.subviews) { if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { UIScrollView * s = (UIScrollView*)subview; originalDelegate = s.delegate; s.delegate = self; break; } } } - (void)scrollViewDidScroll :(UIScrollView *)scrollView { if (scrollView.contentOffset.y == 0) //Show toolbar when at top { [self.toolbar setHidden:NO]; } else { [self.toolbar setHidden:YES]; } [originalDelegate scrollViewDidScroll: scrollView]; } 

Mostrar la barra de herramientas

Esconder barra de herramientas

Hice esto en una aplicación, utilizando el área de text, así que creo que es lo mismo al replace textView con webView.

Inicializar direcciones y banderas

 @implementation YourViewController{ BOOL tap; BOOL hideNav; BOOL mustShowNav; } @synthesize webView; typedef enum ScrollDirection { ScrollDirectionNone, ScrollDirectionRight, ScrollDirectionLeft, ScrollDirectionUp, ScrollDirectionDown, } ScrollDirection; 

viewDidLoad

 - (void)viewDidLoad { webView.delegate = self; hideNav = NO; mustShowNav = NO; UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(webViewTapped:)]; gestureRecognizer.delegate = self; [self.webView addGestureRecognizer:gestureRecognizer]; } 

El desplazamiento

 - (void)scrollViewDidScroll:(UIScrollView*)scrollView { ScrollDirection scrollDirection; if (lastContentOffset.y < scrollView.contentOffset.y) scrollDirection = ScrollDirectionDown; else scrollDirection = ScrollDirectionUp; float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height; if (scrollDirection == ScrollDirectionDown && scrollView.contentOffset.y > 50 && !mustShowNav) { hideNav = YES; tap = 0; } else { hideNav = NO; } if (scrollDirection == ScrollDirectionUp && mustShowNav){ hideNav = NO; mustShowNav = NO; } if (scrollDirection == ScrollDirectionDown && endScrolling > scrollView.contentSize.height - 50 && !mustShowNav) { mustShowNav = YES; } [[self navigationController] setToolbarHidden:hideNav animated:YES]; lastContentOffset = scrollView.contentOffset; [originalDelegate scrollViewDidScroll: scrollView]; } 

El gesto de toque

 - (void)webViewTapped:(id)sender { if(!tap){ hideNav = NO; tap = 1; } else { hideNav = YES; tap = 0; } [[self navigationController] setToolbarHidden:hideNav animated:YES]; } 

Espero que esto te ayude.

La mejor solución sería permitir que su Javascript desencadene esos events y el controller de vista de hosting debería manejarlos.