Pregunta

tengo un UIWebView Como la vista raíz de un UINavigationController. Cuando una página web termina para cargar, oculto la barra de navegación y estoy buscando una manera de volver a mostrarla. En este momento, estoy tratando de hacerlo cuando el usuario aprovecha la barra de estado (Este enfoque Me parece más complicado de lo que quiero).

Para lograr esto, en primer lugar obtengo la vista de desplazamiento de WebView:

for (id subview in mainWebView.subviews) {
    if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
        ((UIScrollView *)subview).delegate = self;
    }
}

y luego uso el método delegado:

-(BOOL) scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    return NO;
}

Esperaba que esto funcionara, pero esto es lo que sucede:

  • Cargas de página y la barra de navegación se oculta (eso es bueno)
  • Intento tocar la barra de estado, pero no pasa nada (eso es malo)
  • Me desplazo hacia abajo para que la vista web esté "muy lejos" de la barra de estado
  • Sin dejar ir la vista web, toco la barra de estado con otro dedo y funciona. (eso es raro :)

Entonces, ¿alguna ayuda con respecto a eso? ¿Por qué está pasando esto?

¿Fue útil?

Solución

Acabo de intentar esto nuevamente en iOS 5.0 y parece funcionar como se esperaba:

[self.webView.scrollView setDelegate:self];
[self.webView.scrollView setScrollsToTop:YES];

y entonces:

-(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

Otros consejos

Tuve el mismo problema. Lo resolví por:

[[[webView subviews] objectAtIndex:0] setScrollsToTop:NO];

También puede obtener la propiedad Access ScrollView en iOS 5 por:

webView.scrollView.scrollsToTop = NO ;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top