1

我有一個UIWebView作爲UINavigationController的根視圖。當一個網頁完成加載後,我隱藏了導航欄,我正在尋找一種方法來顯示它。現在,當用戶點擊狀態欄時我試圖這樣做(this approach在我看來比我想要的更復雜)。僅當UIWebView向下滾動一下時,狀態欄纔會檢測到點擊

爲了做到這一點,首先我得到的web視圖的滾動視圖:

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; 
} 

我希望這會工作,但這裏是發生了什麼:

  • 頁面加載和導航欄被隱藏(這很好)
  • 我嘗試點擊狀態欄,但沒有任何反應(這是很糟糕)
  • 我從狀態欄
  • 向下滾動,這樣的網頁流量是「遠」而不讓web視圖去,我挖掘與狀態欄另一個手指,它的作品! (這很奇怪:)

Soooo,有關的任何幫助?這是爲什麼發生?

+0

你有沒有鰭d解決方案? – fabian789 2011-07-20 17:31:46

+0

@ fabian789我終於使用第一個鏈接http://mithin.in/2009/08/26/detecting-taps-and-events-on-uiwebview-the-right-way – phi 2011-07-21 07:44:29

回答

1

我只是在安裝iOS 5.0這個又試了一次,它似乎按預期方式工作:

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

然後:

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

我有同樣的問題。我解決了它的:

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

您也可以通過獲取接入滾動視圖屬性在iOS 5中:

webView.scrollView.scrollsToTop = NO ; 
+0

但是,您如何設置「 scrollsToTop'到'NO',仍然回調到'-scrollViewShouldScrollToTop'?這是應該如何工作? – phi 2012-01-09 10:48:34

相關問題