2011-12-12 8 views
15

私のuiwebviewに行を指定してロードします。 Iは、[WebViewのstringByEvaluatingJavaScriptFromString: "window.scrollToは(0.0、 100.0)" @]uiwebviewのスクロール位置を設定する方法

を試みました。

でも機能しません。私のwebviewはまだページの上から始まります。 私はUIWebviewUIViewの中にロードするので、私はそれだけのことを思っています。 私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のスクロール位置スクリプトを置く:私は私の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]; 
} 

ビューがロードされたとき。 しかし、それはまったく動作しません。 私は間違っているのですか?

答えて

19

あなたはUIWebViewDelegateであるためにあなたのWebビューを持つビューコントローラを設定していることを確認し、ヘッダファイル(.H)の@interfaceでこれを宣言。

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

私は私のUIWebViewでwebViewDidFinishLoadの上に置くと、その動作していない、スクロールはまだページの最上部に表示されます。他のアイデア? – dejoong

+2

@dejoong:あなたのページはスクロール可能ですか? 'webViewDidFinishLoad'の後に何かがスクロールするかどうかを調べるために、1秒後にタイマーを起動するように設定してみてください。 – Dani

+0

tatz weird Dani、(webview.scrollView.contentOffset = CGPointMake(0、100);を含む)メソッドを起動すると、1秒ごとに動作しますが、メソッドが直接呼び出されても動作しません。なぜあなたは知っていますか? – dejoong

6

をお試しください

[yourWebView setDelegate:self]; 



その後、webViewDidFinishLoad:方法では、このコードを挿入します。

[yourWebView.scrollView scrollRectToVisible:CGRectMake(0, yourWebView.bounds.size.height + 100, 1, 1) animated:NO];   
関連する問題