仅当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 ;