1

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

为了做到这一点,首先我得到了 webView 的滚动视图:

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,对此有任何帮助吗?为什么会这样?

4

2 回答 2

1

我刚刚在 iOS 5.0 中再次尝试了这个,它似乎按预期工作:

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

进而:

-(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}
于 2012-04-07T20:13:42.333 回答
0

我有同样的问题。我通过以下方式解决了它:

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

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

webView.scrollView.scrollsToTop = NO ;
于 2012-01-06T09:23:53.040 回答