2011-12-12 53 views
15

我想指定加載的uiwebview上的行。 我試圖如何在uiwebview上設置滾動位置

[web視圖stringByEvaluatingJavaScriptFromString:@ 「window.scrollTo(0.0, 100.0)」];

但它不工作。我的webview仍然以頁面頂部開始。 我只是想知道它是因爲我在UIView內部加載了UIWebview。 檢查我的UIView我下面的代碼:

- (void)loadView { 
    webview = [[WebViewDetail alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];  //initialize a mainView is a UIWebVIew 
    webview.managedObjectContext = self.managedObjectContext; 
    webview.kitab = self.kitab; 
    webview.currentPasal = self.pasal; 
    self.title = [NSString stringWithFormat:@"%@ %d", self.kitab, webview.currentPasal]; 
    self.view=webview; //make the mainView as the view of this controller  
} 

,我把滾動定位劇本我UIWebView

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    int height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue]; 

    NSString* javascript = [NSString stringWithFormat:@"window.scrollBy(0, %d);", height]; 
    [self stringByEvaluatingJavaScriptFromString:javascript]; 
} 

在這種情況下,我希望把我的UIWebView轉到頁的底部當視圖被加載時。 但它完全不工作,爲什麼? 我做錯了嗎?

回答

19

嘗試

webview.scrollView.contentOffset = CGPointMake(0, 100); 
+0

我把它放在webViewDidFinishLoad我UIWebView中和它不工作,滾動仍然顯示在頁面的頂部。任何其他想法? – dejoong

+2

@dejoong:你確定你的頁面是可滾動的嗎?嘗試在1秒後觸發一個定時器,在'webViewDidFinishLoad'之後查看是否可以滾動。 – Dani

+0

塔茲奇怪丹妮,當我觸發該方法(包含webview.scrollView.contentOffset = CGPointMake(0,100);)每1sec其工作,但如果我直接調用它的方法不工作。你知道爲什麼嗎? – dejoong

6

請務必設置好你有你的Web視圖是一個UIWebViewDelegate視圖控制器,並在頭文件的@interface(.h)中聲明這一點。

[yourWebView setDelegate:self]; 



然後,在webViewDidFinishLoad:方法,插入此代碼:

[yourWebView.scrollView scrollRectToVisible:CGRectMake(0, yourWebView.bounds.size.height + 100, 1, 1) animated:NO];