web-dev-qa-db-ja.com

uiwebviewでスクロール位置を設定する方法

ロードしたuiwebviewの行を指定したいのですが。私は試した

[webView stringByEvaluatingJavaScriptFromString:@ "window.scrollTo(0.0、100.0)"];

しかし、それは機能していません。私のウェブビューはまだページの上部から始まります。 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に配置します。

- (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をページの下部に移動させたいと思います。しかし、それは完全に機能していません、なぜですか?私はそれを間違っていますか?

15
dejoong

試してみてください

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

WebビューがあるViewControllerをUIWebViewDelegateに設定し、ヘッダーファイル(.h)の@interfaceでこれを宣言していることを確認してください。

[yourWebView setDelegate:self];



次に、webViewDidFinishLoad:メソッドに次のコードを挿入します。

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