Domanda

Ho un UIWebView come la visione radicale di a UINavigationController. Quando una pagina web termina per caricare, nascondo la barra di navigazione e sto cercando un modo per mostrarla. In questo momento, sto cercando di farlo quando l'utente tocca la barra di stato (questo approccio Mi sembra più complicato di quello che voglio).

Per raggiungere questo obiettivo, in primo luogo ottengo lo scrollview di WebView:

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

E poi uso il metodo delegato:

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

Speravo che funzionasse, ma ecco cosa succede:

  • I carichi di pagina e la barra di navigazione si nascono (va bene)
  • Cerco di toccare la barra di stato, ma non succede nulla (è male)
  • Scorro verso il basso in modo che il webview sia "lontano" dalla barra di stato
  • Senza lasciare andare il webview, tocco la barra di stato con un altro dito e funziona! (quello è strano :)

Soooo, qualche aiuto al riguardo? Perché sta succedendo?

È stato utile?

Soluzione

L'ho appena provato in iOS 5.0 e sembra funzionare come previsto:

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

poi:

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

Altri suggerimenti

Ho avuto lo stesso problema. L'ho risolto da:

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

Inoltre puoi ottenere la proprietà Access ScrollView in iOS 5 di:

webView.scrollView.scrollsToTop = NO ;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top