仅当UIWebView向下滚动一下时,状态栏才会检测到点击

我有一个UIWebView作为UINavigationController的根视图。 当一个网页完成加载,我隐藏导航栏,我正在寻找一种方法来显示它。 现在,当用户点击状态栏时,我试图这样做( 这种方法在我看来比我想要的更复杂)。

为了做到这一点,首先我得到了webView的scrollView:

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

然后我使用委托方法:

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

我希望这可以工作,但是这是发生了什么事情:

  • 页面加载和导航栏被隐藏(这很好)
  • 我尝试点击状态栏,但没有发生(这是不好的)
  • 我向下滚动,以便webview远离状态栏
  • 不让webview去,我用另一个手指点击状态栏,它的工作原理! (这很奇怪 :)

Soooo,有关于此的任何帮助? 为什么发生这种情况?

我只是在iOS 5.0中再次尝试,似乎按预期工作:

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

接着:

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

我有同样的问题。 我解决了它:

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

您也可以通过以下方式访问iOS 5中的scrollView属性:

 webView.scrollView.scrollsToTop = NO ;