如何在uiwebview上设置滚动位置

dej*_*ong 15 iphone objective-c uiwebview ios

我想去加载我的uiwebview上的行.我试过了

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

但它不起作用.我的网页浏览仍然从页面顶部开始.我只是想知道它,因为我加载UIWebview内部UIView.在我的下面查看我的代码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    
}
Run Code Online (Sandbox Code Playgroud)

我把滚动定位脚本放在我的上面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];
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想在加载视图时将我的uiwebview放到页面底部.但它完全不起作用,为什么?我做错了吗?

Dan*_*ani 19

尝试

webview.scrollView.contentOffset = CGPointMake(0, 100);
Run Code Online (Sandbox Code Playgroud)

  • @dejoong:你确定你的页面可以滚动吗?尝试在1秒钟后启动定时器,看看是否有东西可能会在`webViewDidFinishLoad`之后滚动. (2认同)

Osc*_*yck 6

确保将视图控制器设置为您的Web视图所在的位置UIWebViewDelegate,并@interface在头文件(.h)中声明.

[yourWebView setDelegate:self];
Run Code Online (Sandbox Code Playgroud)



然后,在该webViewDidFinishLoad:方法中,插入此代码:

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